aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-10-10 14:02:18 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-10-10 17:29:22 +0200
commit8f79bb3b8cc9cde18b6c7f1843494cc23fa524e5 (patch)
treed9dda0b65fcb46e6f5e9c9d25f2d86e09fa163be /src/lib/corelib/language
parent203640bb34445c4f4d65823ca6640450f356bfef (diff)
avoid usage of QScriptContext::callee in callbacks
In order to fix QBS-695 we must work-around QTBUG-39416. Instead of relying on the callee() and extracting data from it, we're passing payload via QScriptEngine::newFunction. Change-Id: I1d454fba78523c7cd77a906952bdd48cbd5330db Task-number: QBS-695 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/scriptengine.cpp1
-rw-r--r--src/lib/corelib/language/scriptengine.h3
2 files changed, 4 insertions, 0 deletions
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp
index 7aa6138dd..a9b7c48d7 100644
--- a/src/lib/corelib/language/scriptengine.cpp
+++ b/src/lib/corelib/language/scriptengine.cpp
@@ -93,6 +93,7 @@ ScriptEngine::ScriptEngine(const Logger &logger, QObject *parent)
ScriptEngine::~ScriptEngine()
{
+ qDeleteAll(m_ownedVariantMaps);
}
void ScriptEngine::import(const FileContextBaseConstPtr &fileCtx, QScriptValue scope,
diff --git a/src/lib/corelib/language/scriptengine.h b/src/lib/corelib/language/scriptengine.h
index c56dece01..8932c0cfd 100644
--- a/src/lib/corelib/language/scriptengine.h
+++ b/src/lib/corelib/language/scriptengine.h
@@ -37,6 +37,7 @@
#include <tools/filetime.h>
#include <QHash>
+#include <QList>
#include <QProcessEnvironment>
#include <QScriptEngine>
#include <QStack>
@@ -97,6 +98,7 @@ public:
QSet<QString> imports() const;
static QScriptValueList argumentList(const QStringList &argumentNames,
const QScriptValue &context);
+ void registerOwnedVariantMap(QVariantMap *vm) { m_ownedVariantMaps.append(vm); }
class ScriptValueCache
{
@@ -166,6 +168,7 @@ private:
QScriptValue m_loadFileFunction;
QScriptValue m_loadExtensionFunction;
QScriptValue m_cancelationError;
+ QList<QVariantMap *> m_ownedVariantMaps;
};
} // namespace Internal