diff options
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r-- | src/script/api/qscriptengine.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 3230394..7387078 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -2064,10 +2064,13 @@ QScriptValue QScriptEngine::evaluate(const QString &program, const QString &file JSC::UString jscProgram = QScript::qtStringToJSCUString(program); JSC::UString jscFileName = QScript::qtStringToJSCUString(fileName); - JSC::ExecState* exec = d->globalObject->globalExec(); // ### use d->currentFrame + JSC::ExecState* exec = d->currentFrame; exec->clearException(); + if (!exec->globalData().dynamicGlobalObject) + exec->globalData().dynamicGlobalObject = d->globalObject; d->uncaughtException = JSC::JSValue(); - JSC::Completion comp = JSC::evaluate(exec, exec->lexicalGlobalObject()->globalScopeChain(), + JSC::ScopeChain scopeChain = JSC::ScopeChain(exec->scopeChain()); + JSC::Completion comp = JSC::evaluate(exec, scopeChain, JSC::makeSource(jscProgram, jscFileName, lineNumber)); if ((comp.complType() == JSC::Normal) || (comp.complType() == JSC::ReturnValue)) { Q_ASSERT(!exec->hadException()); |