[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