diff -r ef0373b55136 -r 758a864f9613 src/script/bridge/qscriptdeclarativeobject.cpp --- a/src/script/bridge/qscriptdeclarativeobject.cpp Fri Sep 17 08:34:18 2010 +0300 +++ b/src/script/bridge/qscriptdeclarativeobject.cpp Mon Oct 04 01:19:32 2010 +0300 @@ -88,6 +88,7 @@ JSC::JSValue value, JSC::PutPropertySlot &slot) { QScriptEnginePrivate *engine = scriptEngineFromExec(exec); + QScript::SaveFrameHelper saveFrame(engine, exec); QScriptDeclarativeClass::Identifier identifier = (void *)propertyName.ustring().rep(); QScriptDeclarativeClassPrivate *p = QScriptDeclarativeClassPrivate::get(m_class); @@ -144,7 +145,7 @@ QScriptDeclarativeClass *scriptClass = static_cast(delegate)->m_class; QScriptEnginePrivate *eng_p = scriptEngineFromExec(exec); - JSC::ExecState *oldFrame = eng_p->currentFrame; + QScript::SaveFrameHelper saveFrame(eng_p, exec); eng_p->pushContext(exec, thisValue, args, callee); QScriptContext *ctxt = eng_p->contextForFrame(eng_p->currentFrame); @@ -153,7 +154,6 @@ scriptClass->call(static_cast(delegate)->m_object, ctxt); eng_p->popContext(); - eng_p->currentFrame = oldFrame; return (JSC::JSValue &)(result); }