Title: [208348] trunk/Source/WebInspectorUI
Revision
208348
Author
[email protected]
Date
2016-11-03 14:20:12 -0700 (Thu, 03 Nov 2016)

Log Message

Web Inspector: Stack overflow when searching a timeline recording for JS function names
https://bugs.webkit.org/show_bug.cgi?id=161784
<rdar://problem/28219498>

Reviewed by Timothy Hatcher.

_populate method of ProfileNodeDataGridNode and ProfileDataGridNode traverses
all children of a given node. makeVisible function of DataGrid#_applyFiltersToNode
traverses all its parents to expand them. This creates an infinite recursion.
Remove "populate" event before appending child nodes to prevent it.

* UserInterface/Views/ProfileDataGridNode.js:
(WebInspector.ProfileDataGridNode.prototype._populate):
(WebInspector.ProfileDataGridNode):
* UserInterface/Views/ProfileNodeDataGridNode.js:
(WebInspector.ProfileNodeDataGridNode.prototype._populate):
(WebInspector.ProfileNodeDataGridNode):

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (208347 => 208348)


--- trunk/Source/WebInspectorUI/ChangeLog	2016-11-03 21:07:51 UTC (rev 208347)
+++ trunk/Source/WebInspectorUI/ChangeLog	2016-11-03 21:20:12 UTC (rev 208348)
@@ -1,3 +1,23 @@
+2016-11-03  Nikita Vasilyev  <[email protected]>
+
+        Web Inspector: Stack overflow when searching a timeline recording for JS function names
+        https://bugs.webkit.org/show_bug.cgi?id=161784
+        <rdar://problem/28219498>
+
+        Reviewed by Timothy Hatcher.
+
+        _populate method of ProfileNodeDataGridNode and ProfileDataGridNode traverses
+        all children of a given node. makeVisible function of DataGrid#_applyFiltersToNode
+        traverses all its parents to expand them. This creates an infinite recursion.
+        Remove "populate" event before appending child nodes to prevent it.
+
+        * UserInterface/Views/ProfileDataGridNode.js:
+        (WebInspector.ProfileDataGridNode.prototype._populate):
+        (WebInspector.ProfileDataGridNode):
+        * UserInterface/Views/ProfileNodeDataGridNode.js:
+        (WebInspector.ProfileNodeDataGridNode.prototype._populate):
+        (WebInspector.ProfileNodeDataGridNode):
+
 2016-11-03  Devin Rousso  <[email protected]>
 
         Web Inspector: Modify FolderTreeElement to have a Collection as a its represented object

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js (208347 => 208348)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js	2016-11-03 21:07:51 UTC (rev 208347)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ProfileDataGridNode.js	2016-11-03 21:20:12 UTC (rev 208348)
@@ -255,6 +255,8 @@
         if (!this.shouldRefreshChildren)
             return;
 
+        this.removeEventListener("populate", this._populate, this);
+
         this._node.forEachChild((child) => {
             if (!this._childrenToChargeToSelf.has(child)) {
                 if (child.hasStackTraceInTimeRange(this._tree.startTime, this._tree.endTime))
@@ -263,7 +265,5 @@
         });
 
         this.sort();
-
-        this.removeEventListener("populate", this._populate, this);
     }
 };

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ProfileNodeDataGridNode.js (208347 => 208348)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ProfileNodeDataGridNode.js	2016-11-03 21:07:51 UTC (rev 208347)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ProfileNodeDataGridNode.js	2016-11-03 21:20:12 UTC (rev 208348)
@@ -182,11 +182,10 @@
         if (!this.shouldRefreshChildren)
             return;
 
+        this.removeEventListener("populate", this._populate, this);
         this.removeChildren();
 
         for (let node of this._profileNode.childNodes)
             this.appendChild(new WebInspector.ProfileNodeDataGridNode(node, this.baseStartTime, this.rangeStartTime, this.rangeEndTime));
-
-        this.removeEventListener("populate", this._populate, this);
     }
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to