summaryrefslogtreecommitdiffstats
path: root/src/script
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-03-11 08:18:17 (GMT)
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-13 16:18:26 (GMT)
commited45773caf76455bb737da3c0c4429f99c9a15ad (patch)
tree75e54966c0bd1737a6a628c7eaa8820ce4ccb051 /src/script
parent54491a2571669f0c232d2ab9926991ff9ecf3403 (diff)
downloadQt-ed45773caf76455bb737da3c0c4429f99c9a15ad.zip
Qt-ed45773caf76455bb737da3c0c4429f99c9a15ad.tar.gz
Qt-ed45773caf76455bb737da3c0c4429f99c9a15ad.tar.bz2
Fix recursive calling of QScriptProgram
The first time a QScriptProgram is evaluated, it gets compiled and then executed. If the execution would somehow trigger another evaluation of the script program, it would run into the compile stage again (even though it already was compiled), and then trigger and assertion in debug mode (or leak memory in release builds). Backport of 08d9ef715265d33f4cf04693b0787fd75994dc42 from Qt 5. Task-number: QTBUG-37317 Change-Id: I83e7efd5f238d021e200258826e2e4a9520c3a7d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/script')
-rw-r--r--src/script/api/qscriptengine.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 16c6b76..8b7e01b 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -1359,7 +1359,7 @@ JSC::JSValue QScriptEnginePrivate::evaluateHelper(JSC::ExecState *exec, intptr_t
q->clearExceptions();
JSC::DynamicGlobalObjectScope dynamicGlobalObjectScope(exec, exec->scopeChain()->globalObject);
- if (compile) {
+ if (compile && !executable->isCompiled()) {
JSC::JSObject* error = executable->compile(exec, exec->scopeChain());
if (error) {
compile = false;