JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.3.1
[ckeditor.git] / _source / core / dom / range.js
index 5a05ee1..c187400 100644 (file)
@@ -1789,8 +1789,15 @@ CKEDITOR.dom.range = function( document )
                 */\r
                getEnclosedNode : function()\r
                {\r
-                       var walkerRange = this.clone(),\r
-                               walker = new CKEDITOR.dom.walker( walkerRange ),\r
+                       var walkerRange = this.clone();\r
+\r
+                       // Optimize and analyze the range to avoid DOM destructive nature of walker. (#\r
+                       walkerRange.optimize();\r
+                       if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT\r
+                                       || walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT )\r
+                               return null;\r
+\r
+                       var walker = new CKEDITOR.dom.walker( walkerRange ),\r
                                isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),\r
                                isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),\r
                                evaluator = function( node )\r