diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index d11819a5ca068b752fb3302da4c7fe4ce3af0c0a..b1cacc5bb6a7679675e35f574eec966c15225a9e 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -1238,10 +1238,17 @@ ProStringList ProFileEvaluator::Private::split_value_list(const QString &vals)
     return ret;
 }
 
+static void zipEmpty(ProStringList *value)
+{
+    for (int i = value->size(); --i >= 0;)
+        if (value->at(i).isEmpty())
+            value->remove(i);
+}
+
 static void insertUnique(ProStringList *varlist, const ProStringList &value)
 {
     foreach (const ProString &str, value)
-        if (!varlist->contains(str))
+        if (!str.isEmpty() && !varlist->contains(str))
             varlist->append(str);
 }
 
@@ -1255,7 +1262,8 @@ static void removeAll(ProStringList *varlist, const ProString &value)
 static void removeEach(ProStringList *varlist, const ProStringList &value)
 {
     foreach (const ProString &str, value)
-        removeAll(varlist, str);
+        if (!str.isEmpty())
+            removeAll(varlist, str);
 }
 
 static void replaceInList(ProStringList *varlist,
@@ -1571,17 +1579,19 @@ void ProFileEvaluator::Private::visitProVariable(
             replaceInList(&m_filevaluemap[currentProFile()][varName], regexp, replace, global, m_tmp2);
         }
     } else {
-        const ProStringList &varVal = expandVariableReferences(value);
+        ProStringList varVal = expandVariableReferences(value);
         switch (tok) {
         default: // whatever - cannot happen
         case TokAssign:          // =
             if (!m_cumulative) {
                 if (!m_skipLevel) {
+                    zipEmpty(&varVal);
                     m_valuemapStack.top()[varName] = varVal;
                     m_filevaluemap[currentProFile()][varName] = varVal;
                 }
             } else {
                 // We are greedy for values.
+                zipEmpty(&varVal);
                 valuesRef(varName) += varVal;
                 m_filevaluemap[currentProFile()][varName] += varVal;
             }
@@ -1594,6 +1604,7 @@ void ProFileEvaluator::Private::visitProVariable(
             break;
         case TokAppend:          // +=
             if (!m_skipLevel || m_cumulative) {
+                zipEmpty(&varVal);
                 valuesRef(varName) += varVal;
                 m_filevaluemap[currentProFile()][varName] += varVal;
             }