avm2: Throw errors in theoretically unreachable scenario in XmlDocument

This commit is contained in:
Nathan Adams 2023-08-02 10:07:09 +02:00
parent 3834462abf
commit 020dc34b59
1 changed files with 3 additions and 15 deletions

View File

@ -33,10 +33,7 @@ import flash.xml.XMLNodeType;
clear(); clear();
var root = new XML("<xml>" + input + "</xml>"); var root = new XML("<xml>" + input + "</xml>");
for each (var child in root.children()) { for each (var child in root.children()) {
var node = _convertXmlNode(child); appendChild(_convertXmlNode(child));
if (node != null) {
appendChild(node);
}
} }
} finally { } finally {
XML.AS3::setSettings(oldSettings); XML.AS3::setSettings(oldSettings);
@ -45,16 +42,10 @@ import flash.xml.XMLNodeType;
private function _convertXmlNode(original: XML): XMLNode { private function _convertXmlNode(original: XML): XMLNode {
var nodeType = _convertXmlNodeType(original.nodeKind()); var nodeType = _convertXmlNodeType(original.nodeKind());
if (nodeType == 0) {
return null;
}
var nodeValue = nodeType == XMLNodeType.ELEMENT_NODE ? original.name() : original.toString(); var nodeValue = nodeType == XMLNodeType.ELEMENT_NODE ? original.name() : original.toString();
var result = new XMLNode(nodeType, nodeValue); var result = new XMLNode(nodeType, nodeValue);
for each (var originalChild in original.children()) { for each (var originalChild in original.children()) {
var child = _convertXmlNode(originalChild); result.appendChild(_convertXmlNode(originalChild));
if (child != null) {
result.appendChild(child);
}
} }
var attributeList = original.attributes(); var attributeList = original.attributes();
var attributes = {}; var attributes = {};
@ -72,13 +63,10 @@ import flash.xml.XMLNodeType;
if (kind == "comment") { if (kind == "comment") {
return XMLNodeType.COMMENT_NODE; return XMLNodeType.COMMENT_NODE;
} }
if (kind == "processing-instruction") {
return XMLNodeType.PROCESSING_INSTRUCTION_NODE;
}
if (kind == "element") { if (kind == "element") {
return XMLNodeType.ELEMENT_NODE; return XMLNodeType.ELEMENT_NODE;
} }
return 0; throw new Error("Invalid XML Node kind '" + kind + "' found whilst constructing (legacy) XMLDocument");
} }
public function createElement(name:String): XMLNode { public function createElement(name:String): XMLNode {