diff options
author | Rob Richards <rrichards@php.net> | 2007-09-20 09:30:45 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2007-09-20 09:30:45 +0000 |
commit | adb1cd835dfb50699742f526e5c2ea047d79bdc5 (patch) | |
tree | 49d86a990d71e81ac87e3be36e58508739b97f10 /ext/xmlreader/php_xmlreader.c | |
parent | 8d377a698a73e1abc799f42fe932b1df61966c83 (diff) | |
download | php-git-adb1cd835dfb50699742f526e5c2ea047d79bdc5.tar.gz |
MFH: fix bug #42139 (XMLReader option constants are broken using XML())
add test
Diffstat (limited to 'ext/xmlreader/php_xmlreader.c')
-rw-r--r-- | ext/xmlreader/php_xmlreader.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index 3f48d5296a..933dee611b 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -1060,7 +1060,7 @@ PHP_METHOD(xmlreader, XML) long options = 0; xmlreader_object *intern = NULL; char *source, *uri = NULL, *encoding = NULL; - int resolved_path_len; + int resolved_path_len, ret = 0; char *directory=NULL, resolved_path[MAXPATHLEN]; xmlParserInputBufferPtr inputbfr; xmlTextReaderPtr reader; @@ -1105,15 +1105,20 @@ PHP_METHOD(xmlreader, XML) xmlFree(uri); } if (reader != NULL) { - if (id == NULL) { - object_init_ex(return_value, xmlreader_class_entry); - intern = (xmlreader_object *)zend_objects_get_address(return_value TSRMLS_CC); - } else { - RETVAL_TRUE; +#if LIBXML_VERSION >= 20628 + ret = xmlTextReaderSetup(reader, NULL, uri, encoding, options); +#endif + if (ret == 0) { + if (id == NULL) { + object_init_ex(return_value, xmlreader_class_entry); + intern = (xmlreader_object *)zend_objects_get_address(return_value TSRMLS_CC); + } else { + RETVAL_TRUE; + } + intern->input = inputbfr; + intern->ptr = reader; + return; } - intern->input = inputbfr; - intern->ptr = reader; - return; } } |