Reviewed by Darin.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Dec 2003 06:50:24 +0000 (06:50 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Dec 2003 06:50:24 +0000 (06:50 +0000)
<rdar://problem/3507175>: Setting timeout function can allocate JS objects without lock

        * khtml/ecma/kjs_window.cpp:
        (ScheduledAction::execute): Lock interpreter around code that
might allocate JS objects.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@5759 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/kjs_window.cpp

index e0bb349..e52145a 100644 (file)
@@ -1,3 +1,13 @@
+2003-12-10  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3507175>: Setting timeout function can allocate JS objects without lock
+
+        * khtml/ecma/kjs_window.cpp:
+        (ScheduledAction::execute): Lock interpreter around code that
+       might allocate JS objects.
+
 2003-12-10  David Hyatt  <hyatt@apple.com>
 
        Fix for 3507097, overflow:auto should include the height of the horizontal scrollbar when the height
index f365f42..04e5bb2 100644 (file)
@@ -1607,11 +1607,15 @@ void ScheduledAction::execute(Window *window)
         ExecState *exec = interpreter->globalExec();
         Q_ASSERT( window == interpreter->globalObject().imp() );
         Object obj( window );
+       Interpreter::lock();
         func.call(exec,obj,args); // note that call() creates its own execution state for the func call
+       Interpreter::unlock();
        if ( exec->hadException() ) {
 #if APPLE_CHANGES
          if (Interpreter::shouldPrintExceptions()) {
+           Interpreter::lock();
            char *message = exec->exception().toObject(exec).get(exec, messagePropertyName).toString(exec).ascii();
+           Interpreter::unlock();
            printf("(timer):%s\n", message);
          }
 #endif