Subramanya Sastry has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/89386


Change subject: Bugfix in DOMUtils.addSpanWrappers: childNodes modified while 
iterating
......................................................................

Bugfix in DOMUtils.addSpanWrappers: childNodes modified while iterating

* addSpanWrappers was modifying a childNodes array while iterating
  over it. This causes strange wt2wt errors on snippet like this:

  [[File:Foo.jpg|thumb|a <\!--b--> [[Bar]] <\!--c--> d]]

  The 2nd comment would get lost.

* TODO: Build a suite of tests aimed at testing sub-pipeline parsing,
  DOM fragment building, and DOM fragment unpacking.

Change-Id: I6e2ac8282c90a6b46b9f80fcc82d0032fb35685e
---
M js/lib/mediawiki.DOMUtils.js
1 file changed, 11 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid 
refs/changes/86/89386/1

diff --git a/js/lib/mediawiki.DOMUtils.js b/js/lib/mediawiki.DOMUtils.js
index 6e65f06..2605528 100644
--- a/js/lib/mediawiki.DOMUtils.js
+++ b/js/lib/mediawiki.DOMUtils.js
@@ -1206,7 +1206,17 @@
                        textCommentAccum = [];
                }
 
-               nodes.forEach( function(node) {
+               // Build a real array out of nodes.
+               //
+               // Operating directly on DOM child-nodes array
+               // and manipulating them by adding span wrappers
+               // changes the traversal itself
+               var nodeBuf = [];
+               for (var i = 0; i < nodes.length; i++) {
+                       nodeBuf.push(nodes[i]);
+               }
+
+               nodeBuf.forEach(function(node) {
                        if (node.nodeType === node.TEXT_NODE ||
                                node.nodeType === node.COMMENT_NODE) {
                                textCommentAccum.push(node);

-- 
To view, visit https://gerrit.wikimedia.org/r/89386
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6e2ac8282c90a6b46b9f80fcc82d0032fb35685e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to