[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75

bweinstein at apple.com bweinstein at apple.com
Thu Oct 29 20:43:53 UTC 2009


The following commit has been merged in the webkit-1.1 branch:
commit 6ecf85de17bbe4b7edbb83c49fde075e36b09acf
Author: bweinstein at apple.com <bweinstein at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Oct 13 20:03:23 2009 +0000

    Fix a leak in the inspector by calling didRemoveNode with
    an error code when it fails, instead of returning from the
    Backend.
    
    Reviewed by Pavel Feldman.
    
    * inspector/InspectorBackend.cpp:
    (WebCore::InspectorBackend::removeNode):
    * inspector/front-end/ElementsTreeOutline.js:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49506 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 826db40..263cb50 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,5 +1,17 @@
 2009-10-13  Brian Weinstein  <bweinstein at apple.com>
 
+        Reviewed by Pavel Feldman.
+
+        Fix a leak in the inspector by calling didRemoveNode with
+        an error code when it fails, instead of returning from the
+        Backend.
+
+        * inspector/InspectorBackend.cpp:
+        (WebCore::InspectorBackend::removeNode):
+        * inspector/front-end/ElementsTreeOutline.js:
+
+2009-10-13  Brian Weinstein  <bweinstein at apple.com>
+
         Reviewed by Timothy Hatcher.
 
         Fixes <https://bugs.webkit.org/show_bug.cgi?id=30337>.
diff --git a/WebCore/inspector/InspectorBackend.cpp b/WebCore/inspector/InspectorBackend.cpp
index 43379f6..76a70f1 100644
--- a/WebCore/inspector/InspectorBackend.cpp
+++ b/WebCore/inspector/InspectorBackend.cpp
@@ -457,23 +457,32 @@ void InspectorBackend::copyNode(long nodeId)
 }
     
 void InspectorBackend::removeNode(long callId, long nodeId)
-{    
+{
+    InspectorFrontend* frontend = inspectorFrontend();
+    if (!frontend)
+        return;
+
     Node* node = nodeForId(nodeId);
-    if (!node)
+    if (!node) {
+        // Use -1 to denote an error condition.
+        frontend->didRemoveNode(callId, -1);
         return;
+    }
 
     Node* parentNode = node->parentNode();
-    if (!parentNode)
+    if (!parentNode) {
+        frontend->didRemoveNode(callId, -1);
         return;
+    }
 
     ExceptionCode code;
     parentNode->removeChild(node, code);
-    
-    if (code)
+    if (code) {
+        frontend->didRemoveNode(callId, -1);
         return;
-    
-    if (InspectorFrontend* frontend = inspectorFrontend())
-        frontend->didRemoveNode(callId, nodeId);
+    }
+
+    frontend->didRemoveNode(callId, nodeId);
 }
 
 void InspectorBackend::getCookies(long callId, const String& domain)
diff --git a/WebCore/inspector/front-end/ElementsTreeOutline.js b/WebCore/inspector/front-end/ElementsTreeOutline.js
index 22edee1..ec1bbd0 100644
--- a/WebCore/inspector/front-end/ElementsTreeOutline.js
+++ b/WebCore/inspector/front-end/ElementsTreeOutline.js
@@ -854,6 +854,11 @@ WebInspector.ElementsTreeElement.prototype = {
         var self = this;
         function removeNodeCallback(removedNodeId)
         {
+            // -1 is an error code, which means removing the node from the DOM failed,
+            // so we shouldn't remove it from the tree.
+            if (removedNodeId === -1)
+                return;
+
             parentElement.removeChild(self);
         }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list