diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index c883ba835ee74faf7b4bc26385e98e77b8542e12..5f733482830990e576f1502915786f22252fb765 100644 --- a/src/shared/proparser/profileevaluator.cpp +++ b/src/shared/proparser/profileevaluator.cpp @@ -200,6 +200,7 @@ public: }; bool read(ProFile *pro); + bool read(ProFile *pro, const QString &content); bool read(ProBlock *pro, const QString &content); bool readInternal(ProBlock *pro, const QString &content, ushort *buf); @@ -554,14 +555,28 @@ bool ProFileEvaluator::Private::read(ProFile *pro) QString content(QString::fromLatin1(file.readAll())); // yes, really latin1 file.close(); m_lineNo = 1; - return readInternal(pro, content, (ushort*)content.data()); + m_profileStack.push(pro); + bool ret = readInternal(pro, content, (ushort*)content.data()); + m_profileStack.pop(); + return ret; } -bool ProFileEvaluator::Private::read(ProBlock *pro, const QString &content) +bool ProFileEvaluator::Private::read(ProFile *pro, const QString &content) { QString buf; buf.reserve(content.size()); m_lineNo = 1; + m_profileStack.push(pro); + bool ret = readInternal(pro, content, (ushort*)buf.data()); + m_profileStack.pop(); + return ret; +} + +bool ProFileEvaluator::Private::read(ProBlock *pro, const QString &content) +{ + QString buf; + buf.reserve(content.size()); + m_lineNo = 0; return readInternal(pro, content, (ushort*)buf.data()); }