src/script/bridge/qscriptdeclarativeobject.cpp
changeset 37 758a864f9613
parent 30 5dc02b23752f
--- 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<DeclarativeObjectDelegate*>(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<DeclarativeObjectDelegate*>(delegate)->m_object, ctxt);
 
     eng_p->popContext();
-    eng_p->currentFrame = oldFrame;
     return (JSC::JSValue &)(result);
 }