diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index a7646be104b9eaaad9a4c8ee65fc901beb63028a..4e7fed550a5c0ca343ce3c11fa9706be48a7893d 100644 --- a/src/shared/proparser/profileevaluator.cpp +++ b/src/shared/proparser/profileevaluator.cpp @@ -2749,12 +2749,22 @@ ProItem::ProItemReturn ProFileEvaluator::Private::evaluateConditionalFunction( m_sts = sts; } else { QHash<QString, QStringList> symbols; - if ((ok = evaluateFileInto(fn, &symbols, 0))) + if ((ok = evaluateFileInto(fn, &symbols, 0))) { + QHash<QString, QStringList> newMap; + for (QHash<QString, QStringList>::ConstIterator + it = m_valuemapStack.top().constBegin(), + end = m_valuemapStack.top().constEnd(); + it != end; ++it) + if (!(it.key().startsWith(parseInto) && + (it.key().length() == parseInto.length() + || it.key().at(parseInto.length()) == QLatin1Char('.')))) + newMap[it.key()] = it.value(); for (QHash<QString, QStringList>::ConstIterator it = symbols.constBegin(); it != symbols.constEnd(); ++it) if (!it.key().startsWith(QLatin1Char('.'))) - m_valuemapStack.top().insert(parseInto + QLatin1Char('.') + it.key(), - it.value()); + newMap.insert(parseInto + QLatin1Char('.') + it.key(), it.value()); + m_valuemapStack.top() = newMap; + } } return returnBool(ok); }