}
/* }}} */
-static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, int options TSRMLS_DC) /* {{{ */
+static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, int source_len, int options TSRMLS_DC) /* {{{ */
{
xmlDocPtr ret;
xmlParserCtxtPtr ctxt = NULL;
}
} else {
- ctxt = xmlCreateDocParserCtxt(source);
+ ctxt = xmlCreateMemoryParserCtxt(source, source_len);
}
if (ctxt == NULL) {
}
}
- newdoc = dom_document_parser(id, mode, source.s, options TSRMLS_CC);
+ newdoc = dom_document_parser(id, mode, source.s, source_len, options TSRMLS_CC);
if (source_type == IS_UNICODE) {
efree(source.s);
--- /dev/null
+--TEST--
+Bug #50661 (DOMDocument::loadXML does not allow UTF-16).
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$data = b"\xFE\xFF\x00\x3C\x00\x66\x00\x6F\x00\x6F\x00\x2F\x00\x3E";
+
+$dom = new DOMDocument();
+$dom->loadXML($data);
+echo $dom->saveXML();
+
+?>
+--EXPECT--
+<?xml version="1.0"?>
+<foo/>