Fix XMLReader::readOuterXML() (github pull 2058)
commitc97b321c400253b8abbbf4c9184d9fdecaa04f19
authorWitchakorn Kamolpornwijit <witchakk@mit.edu>
Fri, 21 Mar 2014 15:57:38 +0000 (21 08:57 -0700)
committerSara Golemon <sgolemon@fb.com>
Wed, 26 Mar 2014 03:07:20 +0000 (25 20:07 -0700)
treee6847cde38f0a04927786fbc0fb3e80282801bd6
parent548e860e4301ee32deb46e4328be9d993c593b34
Fix XMLReader::readOuterXML() (github pull 2058)

This fixes a bug encounted by one of the Joomla! testcases.

Example code:

  <?php
  $xml = <<<EOF
  <a>
  <b>0</b>
  <c>1<d>2<e>3</e>4</d>5</c>
  </a>
  EOF;
  $reader = new XMLReader;
  $reader->XML($xml);
  while($reader->read()) {
          var_dump($reader->readOuterXML());
  }

Expected Result:

  string(44) "<a>
  <b>0</b>
  <c>1<d>2<e>3</e>4</d>5</c>
  </a>"
  string(1) "
  "
  string(8) "<b>0</b>"
  string(1) "0"
  string(4) "<b/>"
  string(1) "
  "
  string(26) "<c>1<d>2<e>3</e>4</d>5</c>"
  string(1) "1"
  string(17) "<d>2<e>3</e>4</d>"
  string(1) "2"
  string(8) "<e>3</e>"
  string(1) "3"
  string(4) "<e/>"
  string(1) "4"
  string(4) "<d/>"
  string(1) "5"
  string(4) "<c/>"
  string(1) "
  "
  string(4) "<a/>"
  Actual Result:

  string(9) "
  0
  12345
  "
  string(1) "
  "
  string(1) "0"
  string(1) "0"
  string(0) ""
  string(1) "
  "
  string(5) "12345"
  string(1) "1"
  string(3) "234"
  string(1) "2"
  string(1) "3"
  string(1) "3"
  string(0) ""
  string(1) "4"
  string(0) ""
  string(1) "5"
  string(0) ""
  string(1) "
  "
  string(0) ""

Closes #2058
Closes #2056

https://github.com/facebook/hhvm/pull/2058

Reviewed By: @sgolemon

Differential Revision: D1220894
hphp/runtime/ext/ext_xmlreader.cpp
hphp/test/frameworks/results/joomlacms.expect
hphp/test/slow/ext_xml/xmlreader-read-outer-xml.php [new file with mode: 0644]
hphp/test/slow/ext_xml/xmlreader-read-outer-xml.php.expect [new file with mode: 0644]
hphp/test/zend/good/ext/xmlreader/tests/011.php [moved from hphp/test/zend/bad/ext/xmlreader/tests/011.php with 97% similarity]
hphp/test/zend/good/ext/xmlreader/tests/011.php.expectf [moved from hphp/test/zend/bad/ext/xmlreader/tests/011.php.expectf with 100% similarity]
hphp/test/zend/good/ext/xmlreader/tests/011.php.skipif [moved from hphp/test/zend/bad/ext/xmlreader/tests/011.php.skipif with 100% similarity]