You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2020/05/06 11:55:50 UTC

[royale-asjs] 07/07: Fix another XMLList assignment scenario using empty list (has the effect of 'erasing' the assign-to named nodes)

This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch release/0.9.7
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 529116cba62a07aa81d15789f7716ba869dc1bf1
Author: greg-dove <gr...@gmail.com>
AuthorDate: Wed May 6 20:33:56 2020 +1200

    Fix another XMLList assignment scenario using empty list (has the effect of 'erasing' the assign-to named nodes)
---
 frameworks/projects/XML/src/main/royale/XML.as     | 24 ++++++++++++----------
 .../flexUnitTests/xml/XMLTesterGeneralTest.as      |  9 ++++++++
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/frameworks/projects/XML/src/main/royale/XML.as b/frameworks/projects/XML/src/main/royale/XML.as
index 290a296..b854bc8 100644
--- a/frameworks/projects/XML/src/main/royale/XML.as
+++ b/frameworks/projects/XML/src/main/royale/XML.as
@@ -2381,20 +2381,22 @@ package
 			else if(v is XMLList)
 			{
 				len = (v as XMLList).length();
-				if (!len) return;
 				//6.
 				if(_children[idx])
 					_children[idx]._parent = null;
-
-				v[0].setParent(this);
-				_children[idx] = v[0];
-				var listIdx:int = 1;
-				var chld:XML = v[0];
-				while(listIdx < len)
-				{
-					chld = v[listIdx];
-					insertChildAt(chld,idx+listIdx);
-					listIdx++;
+				if (len)  {
+					v[0].setParent(this);
+					_children[idx] = v[0];
+					var listIdx:int = 1;
+					var chld:XML = v[0];
+					while(listIdx < len)
+					{
+						chld = v[listIdx];
+						insertChildAt(chld,idx+listIdx);
+						listIdx++;
+					}
+				} else {
+					_children.splice(idx,1);
 				}
 			}
 			else
diff --git a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
index 219b651..0e07414 100644
--- a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
+++ b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
@@ -1319,6 +1319,15 @@ package flexUnitTests.xml
                     '  <foo/>\n' +
                     '  <foo/>\n' +
                     '</root>', 'unexpected  XMLList assignment');
+
+
+            xmlList = new XMLList();
+            xml.foobazzer = xmlList;
+            assertEquals(xml.toXMLString(), '<root>\n' +
+                    '  <foo/>\n' +
+                    '  <foo/>\n' +
+                    '  <foo/>\n' +
+                    '</root>', 'unexpected  XMLList assignment')
         }
         
         //@todo - Passes in Swf, fails in browser: