diff options
author | redmatrix <git@macgirvin.com> | 2016-07-03 15:58:20 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-07-03 15:58:20 -0700 |
commit | 57226b2e1378c2769709a2b2407249cc4e3b14f4 (patch) | |
tree | fbb6a4713b6ae9c5cb13ab47ffdb1d03a586c820 /vendor/sabre/xml/lib/Reader.php | |
parent | 17e161006a9ddbfbea3e0b6d5f7776ad7b8101e2 (diff) | |
parent | f46eecc1e7585e64069bb18918a2db057a16c480 (diff) | |
download | volse-hubzilla-57226b2e1378c2769709a2b2407249cc4e3b14f4.tar.gz volse-hubzilla-57226b2e1378c2769709a2b2407249cc4e3b14f4.tar.bz2 volse-hubzilla-57226b2e1378c2769709a2b2407249cc4e3b14f4.zip |
Merge branch 'dev' into perms
Diffstat (limited to 'vendor/sabre/xml/lib/Reader.php')
-rw-r--r-- | vendor/sabre/xml/lib/Reader.php | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/vendor/sabre/xml/lib/Reader.php b/vendor/sabre/xml/lib/Reader.php index 7cba76c59..f35dc8537 100644 --- a/vendor/sabre/xml/lib/Reader.php +++ b/vendor/sabre/xml/lib/Reader.php @@ -142,7 +142,12 @@ class Reader extends XMLReader { // choice. See: // // https://bugs.php.net/bug.php?id=64230 - if (!@$this->read()) return false; + if (!@$this->read()) { + if (!is_null($elementMap)) { + $this->popContext(); + } + return false; + } while (true) { @@ -152,6 +157,9 @@ class Reader extends XMLReader { if ($errors) { libxml_clear_errors(); + if (!is_null($elementMap)) { + $this->popContext(); + } throw new LibXMLException($errors); } } @@ -170,6 +178,9 @@ class Reader extends XMLReader { $this->read(); break 2; case self::NONE : + if (!is_null($elementMap)) { + $this->popContext(); + } throw new ParseException('We hit the end of the document prematurely. This likely means that some parser "eats" too many elements. Do not attempt to continue parsing.'); default : // Advance to the next element @@ -282,8 +293,13 @@ class Reader extends XMLReader { */ function getDeserializerForElementName($name) { + if (!array_key_exists($name, $this->elementMap)) { - return ['Sabre\\Xml\\Element\\Base', 'xmlDeserialize']; + if (substr($name, 0, 2) == '{}' && array_key_exists(substr($name, 2), $this->elementMap)) { + $name = substr($name, 2); + } else { + return ['Sabre\\Xml\\Element\\Base', 'xmlDeserialize']; + } } $deserializer = $this->elementMap[$name]; |