JavaScriptCore:
authorddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Jun 2006 00:30:57 +0000 (00:30 +0000)
committerddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Jun 2006 00:30:57 +0000 (00:30 +0000)
        Reviewed by darin.

        http://bugzilla.opendarwin.org/show_bug.cgi?id=9477
        REGRESSION: fast/dom/replaceChild.html crashes on WebKit ToT in debug build

        * kjs/function.cpp:
        (KJS::FunctionImp::callAsFunction): Refetch the debugger after executing the function
        in case the WebFrame it was running in has since been destroyed.

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

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/function.cpp

index 55859dd6d3b9287c0859d36df5250beb358ace38..288b56614a0e3623daa9559905211f0b0bf2023e 100644 (file)
@@ -1,3 +1,14 @@
+2006-06-17  David Kilzer  <ddkilzer@kilzer.net>
+
+        Reviewed by darin.
+
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=9477
+        REGRESSION: fast/dom/replaceChild.html crashes on WebKit ToT in debug build
+
+        * kjs/function.cpp:
+        (KJS::FunctionImp::callAsFunction): Refetch the debugger after executing the function
+        in case the WebFrame it was running in has since been destroyed.
+
 2006-06-17  David Kilzer  <ddkilzer@kilzer.net>
 
         Reviewed by ggaren.
 2006-06-17  David Kilzer  <ddkilzer@kilzer.net>
 
         Reviewed by ggaren.
index ffbd23c2dddd9e60eb99e83af7fb588bed4b4cde..ce0e374356b8dd1cf08ccbd258ec2d41a58c9107 100644 (file)
@@ -113,6 +113,11 @@ JSValue *FunctionImp::callAsFunction(ExecState* exec, JSObject* thisObj, const L
     fprintf(stderr, "returning: undefined\n");
 #endif
 
     fprintf(stderr, "returning: undefined\n");
 #endif
 
+  // The debugger may have been deallocated by now if the WebFrame
+  // we were running in has been destroyed, so refetch it.
+  // See http://bugzilla.opendarwin.org/show_bug.cgi?id=9477
+  dbg = exec->dynamicInterpreter()->debugger();
+
   if (dbg) {
     if (inherits(&DeclaredFunctionImp::info))
       lineno = static_cast<DeclaredFunctionImp*>(this)->body->lastLine();
   if (dbg) {
     if (inherits(&DeclaredFunctionImp::info))
       lineno = static_cast<DeclaredFunctionImp*>(this)->body->lastLine();