[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c /ext/xmlreader/tests bug42139.phpt
rrichards Thu Sep 20 09:30:45 2007 UTC Added files: (Branch: PHP_5_2) /php-src/ext/xmlreader/testsbug42139.phpt Modified files: /php-src/ext/xmlreader php_xmlreader.c Log: MFH: fix bug #42139 (XMLReader option constants are broken using XML()) add test http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.8r2=1.13.2.14.2.9diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.8 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.9 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.8 Thu Jul 26 13:20:21 2007 +++ php-src/ext/xmlreader/php_xmlreader.c Thu Sep 20 09:30:45 2007 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.8 2007/07/26 13:20:21 bjori Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.9 2007/09/20 09:30:45 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -1060,7 +1060,7 @@ 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 @@ 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; } } http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/tests/bug42139.phpt?view=markuprev=1.1 Index: php-src/ext/xmlreader/tests/bug42139.phpt +++ php-src/ext/xmlreader/tests/bug42139.phpt --TEST-- Bug #42139 (XMLReader option constants are broken using XML()) --SKIPIF-- ?php if (!extension_loaded(xmlreader)) print skip; if (LIBXML_VERSION 20628) die(skip: libxml2 2.6.28+ required); ? --FILE-- ?php $xml = XML ?xml version=1.0 encoding=utf-8? !DOCTYPE root [ !ELEMENT root ANY !ENTITY x y ] rootx;/root XML; $reader = new XMLReader; $reader-XML( $xml, NULL, LIBXML_NOENT); while ( $reader-read() ) { echo {$reader-nodeType}, {$reader-name}, {$reader-value}\n; } $reader-close(); ? --EXPECT-- 10, root, 1, root, 3, #text, y 15, root, -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c
bjori Thu Jul 26 13:20:21 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlreader php_xmlreader.c Log: MFH: arginfo http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.7r2=1.13.2.14.2.8diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.7 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.8 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.7 Fri Jan 12 12:17:32 2007 +++ php-src/ext/xmlreader/php_xmlreader.c Thu Jul 26 13:20:21 2007 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.7 2007/01/12 12:17:32 tony2001 Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.8 2007/07/26 13:20:21 bjori Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -1163,38 +1163,161 @@ #endif } /* }}} */ +/* {{{ arginfo */ +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_close, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_getAttribute, 0) + ZEND_ARG_INFO(0, name) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_getAttributeNo, 0) + ZEND_ARG_INFO(0, index) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_getAttributeNs, 0) + ZEND_ARG_INFO(0, name) + ZEND_ARG_INFO(0, namespaceURI) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_getParserProperty, 0) + ZEND_ARG_INFO(0, property) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_isValid, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_lookupNamespace, 0) +ZEND_ARG_INFO(0, prefix) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_moveToAttribute, 0) + ZEND_ARG_INFO(0, name) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_moveToAttributeNo, 0) + ZEND_ARG_INFO(0, index) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_moveToAttributeNs, 0) + ZEND_ARG_INFO(0, name) + ZEND_ARG_INFO(0, namespaceURI) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_moveToElement, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_moveToFirstAttribute, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_moveToNextAttribute, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_read, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlreader_next, 0, 0, 0) + ZEND_ARG_INFO(0, localname) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlreader_open, 0, 0, 1) + ZEND_ARG_INFO(0, URI) + ZEND_ARG_INFO(0, encoding) + ZEND_ARG_INFO(0, options) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_readInnerXml, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_readOuterXml, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_readString, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_setSchema, 0) + ZEND_ARG_INFO(0, filename) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_setParserProperty, 0) + ZEND_ARG_INFO(0, property) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_setRelaxNGSchema, 0) + ZEND_ARG_INFO(0, filename) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_setRelaxNGSchemaSource, 0) + ZEND_ARG_INFO(0, source) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlreader_XML, 0, 0, 1) + ZEND_ARG_INFO(0, source) + ZEND_ARG_INFO(0, encoding) + ZEND_ARG_INFO(0, options) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_expand, 0) +ZEND_END_ARG_INFO() +/* }}} */ static zend_function_entry xmlreader_functions[] = { - PHP_ME(xmlreader, close, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, getAttribute, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, getAttributeNo, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, getAttributeNs, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, getParserProperty, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, isValid, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, lookupNamespace, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, moveToAttributeNo, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, moveToAttribute, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, moveToAttributeNs, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, moveToElement, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, moveToFirstAttribute, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, moveToNextAttribute, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, open, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ALLOW_STATIC) - PHP_ME(xmlreader, read, NULL, ZEND_ACC_PUBLIC) - PHP_ME(xmlreader, next, NULL,
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c
tony2001Wed Oct 4 13:30:53 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlreader php_xmlreader.c Log: MFH http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.4r2=1.13.2.14.2.5diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.4 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.5 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.4 Sat Sep 16 18:18:55 2006 +++ php-src/ext/xmlreader/php_xmlreader.c Wed Oct 4 13:30:53 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.4 2006/09/16 18:18:55 nlopess Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.5 2006/10/04 13:30:53 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -471,6 +471,7 @@ } /* }}} */ +#if LIBXML_VERSION = 20620 /* {{{ php_xmlreader_no_arg_string */ static void php_xmlreader_no_arg_string(INTERNAL_FUNCTION_PARAMETERS, xmlreader_read_char_t internal_function) { zval *id; @@ -492,6 +493,7 @@ } } /* }}} */ +#endif /* {{{ php_xmlreader_set_relaxng_schema */ static void php_xmlreader_set_relaxng_schema(INTERNAL_FUNCTION_PARAMETERS, int type) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c /ext/xmlwriter php_xmlwriter.c
nlopess Sat Sep 16 18:15:25 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlreader php_xmlreader.c /php-src/ext/xmlwriter php_xmlwriter.c Log: add missing checks around expand_filepath() http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.2r2=1.13.2.14.2.3diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.2 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.3 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.2 Tue Jun 6 21:44:34 2006 +++ php-src/ext/xmlreader/php_xmlreader.c Sat Sep 16 18:15:25 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.2 2006/06/06 21:44:34 tony2001 Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.3 2006/09/16 18:15:25 nlopess Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -260,9 +260,8 @@ file_dest = source; if ((uri-scheme == NULL || isFileUri)) { - /* XXX possible buffer overflow if VCWD_REALPATH does not know size of resolved_path */ - if (! VCWD_REALPATH(source, resolved_path)) { - expand_filepath(source, resolved_path TSRMLS_CC); + if (!VCWD_REALPATH(source, resolved_path) !expand_filepath(source, resolved_path TSRMLS_CC)) { + return NULL; } file_dest = resolved_path; } http://cvs.php.net/viewvc.cgi/php-src/ext/xmlwriter/php_xmlwriter.c?r1=1.20.2.12.2.3r2=1.20.2.12.2.4diff_format=u Index: php-src/ext/xmlwriter/php_xmlwriter.c diff -u php-src/ext/xmlwriter/php_xmlwriter.c:1.20.2.12.2.3 php-src/ext/xmlwriter/php_xmlwriter.c:1.20.2.12.2.4 --- php-src/ext/xmlwriter/php_xmlwriter.c:1.20.2.12.2.3 Tue Jul 11 16:33:25 2006 +++ php-src/ext/xmlwriter/php_xmlwriter.c Sat Sep 16 18:15:25 2006 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: php_xmlwriter.c,v 1.20.2.12.2.3 2006/07/11 16:33:25 tony2001 Exp $ */ +/* $Id: php_xmlwriter.c,v 1.20.2.12.2.4 2006/09/16 18:15:25 nlopess Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -272,9 +272,8 @@ file_dest = source; if ((uri-scheme == NULL || isFileUri)) { - /* XXX possible buffer overflow if VCWD_REALPATH does not know size of resolved_path */ - if (! VCWD_REALPATH(source, resolved_path)) { - expand_filepath(source, resolved_path TSRMLS_CC); + if (!VCWD_REALPATH(source, resolved_path) !expand_filepath(source, resolved_path TSRMLS_CC)) { + return NULL; } file_dest = resolved_path; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c /ext/xmlwriter php_xmlwriter.c
nlopess Sat Sep 16 18:18:55 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlreader php_xmlreader.c /php-src/ext/xmlwriter php_xmlwriter.c Log: plug leaks that in the previous patch http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.3r2=1.13.2.14.2.4diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.3 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.4 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.3 Sat Sep 16 18:15:25 2006 +++ php-src/ext/xmlreader/php_xmlreader.c Sat Sep 16 18:18:55 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.3 2006/09/16 18:15:25 nlopess Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.4 2006/09/16 18:18:55 nlopess Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -261,6 +261,7 @@ if ((uri-scheme == NULL || isFileUri)) { if (!VCWD_REALPATH(source, resolved_path) !expand_filepath(source, resolved_path TSRMLS_CC)) { + xmlFreeURI(uri); return NULL; } file_dest = resolved_path; http://cvs.php.net/viewvc.cgi/php-src/ext/xmlwriter/php_xmlwriter.c?r1=1.20.2.12.2.4r2=1.20.2.12.2.5diff_format=u Index: php-src/ext/xmlwriter/php_xmlwriter.c diff -u php-src/ext/xmlwriter/php_xmlwriter.c:1.20.2.12.2.4 php-src/ext/xmlwriter/php_xmlwriter.c:1.20.2.12.2.5 --- php-src/ext/xmlwriter/php_xmlwriter.c:1.20.2.12.2.4 Sat Sep 16 18:15:25 2006 +++ php-src/ext/xmlwriter/php_xmlwriter.c Sat Sep 16 18:18:55 2006 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: php_xmlwriter.c,v 1.20.2.12.2.4 2006/09/16 18:15:25 nlopess Exp $ */ +/* $Id: php_xmlwriter.c,v 1.20.2.12.2.5 2006/09/16 18:18:55 nlopess Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -273,6 +273,7 @@ if ((uri-scheme == NULL || isFileUri)) { if (!VCWD_REALPATH(source, resolved_path) !expand_filepath(source, resolved_path TSRMLS_CC)) { + xmlFreeURI(uri); return NULL; } file_dest = resolved_path; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c
tony2001Tue Jun 6 21:44:34 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlreader php_xmlreader.c Log: implement a dummy clone_obj handler for ze1 compat mode (fixes segfault on every XMLReader instantiation) http://cvs.php.net/viewcvs.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14.2.1r2=1.13.2.14.2.2diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.1 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.2 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.1 Wed May 10 12:04:46 2006 +++ php-src/ext/xmlreader/php_xmlreader.c Tue Jun 6 21:44:34 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.1 2006/05/10 12:04:46 rrichards Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.2 2006/06/06 21:44:34 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -35,6 +35,7 @@ zend_class_entry *xmlreader_class_entry; static zend_object_handlers xmlreader_object_handlers; +static zend_object_handlers xmlreader_object_handlers_ze1; static HashTable xmlreader_prop_handlers; @@ -351,6 +352,14 @@ } /* }}} */ +/* {{{ xmlreader_objects_ze1_clone_obj */ +zend_object_value xmlreader_objects_ze1_clone_obj(zval *object TSRMLS_DC) +{ + php_error(E_ERROR, Cannot clone object of class %s due to 'zend.ze1_compatibility_mode', Z_OBJCE_P(object)-name); + return object-value.obj; +} +/* }}} */ + /* {{{ xmlreader_free_resources */ static void xmlreader_free_resources(xmlreader_object *intern) { if (intern) { @@ -404,7 +413,7 @@ zend_hash_copy(intern-std.properties, class_type-default_properties, (copy_ctor_func_t) zval_add_ref, (void *) tmp, sizeof(zval *)); retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) xmlreader_objects_free_storage, xmlreader_objects_clone TSRMLS_CC); intern-handle = retval.handle; - retval.handlers = xmlreader_object_handlers; + retval.handlers = EG(ze1_compatibility_mode) ? xmlreader_object_handlers_ze1 : xmlreader_object_handlers; return retval; } /* }}} */ @@ -1199,6 +1208,12 @@ xmlreader_object_handlers.write_property = xmlreader_write_property; xmlreader_object_handlers.get_property_ptr_ptr = xmlreader_get_property_ptr_ptr; + memcpy(xmlreader_object_handlers_ze1, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + xmlreader_object_handlers_ze1.read_property = xmlreader_read_property; + xmlreader_object_handlers_ze1.write_property = xmlreader_write_property; + xmlreader_object_handlers_ze1.get_property_ptr_ptr = xmlreader_get_property_ptr_ptr; + xmlreader_object_handlers_ze1.clone_obj = xmlreader_objects_ze1_clone_obj; + INIT_CLASS_ENTRY(ce, XMLReader, xmlreader_functions); ce.create_object = xmlreader_objects_new; xmlreader_class_entry = zend_register_internal_class(ce TSRMLS_CC); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c php_xmlreader.h /ext/xmlreader/tests 013.phpt 013.xsd
rrichards Wed May 10 12:04:47 2006 UTC Added files: (Branch: PHP_5_2) /php-src/ext/xmlreader/tests013.phpt 013.xsd Modified files: /php-src/ext/xmlreader php_xmlreader.c php_xmlreader.h Log: Synch with HEAD add readInnerXML, readOuterXML, readString, and setSchema functionality allow parser options to be passed when loading reader optimization: use xmlTextReader const functions for string properties add test http://cvs.php.net/viewcvs.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.13.2.14r2=1.13.2.14.2.1diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14 php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14.2.1 --- php-src/ext/xmlreader/php_xmlreader.c:1.13.2.14 Mon Apr 3 14:59:30 2006 +++ php-src/ext/xmlreader/php_xmlreader.c Wed May 10 12:04:46 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14 2006/04/03 14:59:30 tony2001 Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.1 2006/05/10 12:04:46 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -40,21 +40,23 @@ typedef int (*xmlreader_read_int_t)(xmlTextReaderPtr reader); typedef unsigned char *(*xmlreader_read_char_t)(xmlTextReaderPtr reader); +typedef const unsigned char *(*xmlreader_read_const_char_t)(xmlTextReaderPtr reader); typedef int (*xmlreader_write_t)(xmlreader_object *obj, zval *newval TSRMLS_DC); typedef unsigned char *(*xmlreader_read_one_char_t)(xmlTextReaderPtr reader, const unsigned char *); typedef struct _xmlreader_prop_handler { xmlreader_read_int_t read_int_func; - xmlreader_read_char_t read_char_func; + xmlreader_read_const_char_t read_char_func; xmlreader_write_t write_func; int type; } xmlreader_prop_handler; #define XMLREADER_LOAD_STRING 0 #define XMLREADER_LOAD_FILE 1 + /* {{{ xmlreader_register_prop_handler */ -static void xmlreader_register_prop_handler(HashTable *prop_handler, char *name, xmlreader_read_int_t read_int_func, xmlreader_read_char_t read_char_func, int rettype TSRMLS_DC) +static void xmlreader_register_prop_handler(HashTable *prop_handler, char *name, xmlreader_read_int_t read_int_func, xmlreader_read_const_char_t read_char_func, int rettype TSRMLS_DC) { xmlreader_prop_handler hnd; @@ -68,7 +70,7 @@ /* {{{ xmlreader_property_reader */ static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handler *hnd, zval **retval TSRMLS_DC) { - char *retchar = NULL; + const xmlChar *retchar = NULL; int retint = 0; if (obj-ptr != NULL) { @@ -90,8 +92,7 @@ switch (hnd-type) { case IS_STRING: if (retchar) { - ZVAL_STRING(*retval, retchar, 1); - xmlFree(retchar); + ZVAL_STRING(*retval, (xmlChar *) retchar, 1); } else { ZVAL_EMPTY_STRING(*retval); } @@ -377,20 +378,8 @@ { xmlreader_object *intern = (xmlreader_object *)object; -#if (PHP_MAJOR_VERSION == 5 PHP_MINOR_VERSION == 1 PHP_RELEASE_VERSION 2) || (PHP_MAJOR_VERSION == 5 PHP_MINOR_VERSION 1) || (PHP_MAJOR_VERSION 5) zend_object_std_dtor(intern-std TSRMLS_CC); -#else - if (intern-std.guards) { - zend_hash_destroy(intern-std.guards); - FREE_HASHTABLE(intern-std.guards); - } - - if (intern-std.properties) { - zend_hash_destroy(intern-std.properties); - FREE_HASHTABLE(intern-std.properties); - } -#endif - + xmlreader_free_resources(intern); efree(object); @@ -405,21 +394,13 @@ zval *tmp; intern = emalloc(sizeof(xmlreader_object)); + memset(intern-std, 0, sizeof(zend_object)); intern-ptr = NULL; intern-input = NULL; intern-schema = NULL; intern-prop_handler = xmlreader_prop_handlers; -#if (PHP_MAJOR_VERSION == 5 PHP_MINOR_VERSION == 1 PHP_RELEASE_VERSION 2) || (PHP_MAJOR_VERSION == 5 PHP_MINOR_VERSION 1) || (PHP_MAJOR_VERSION 5) zend_object_std_init(intern-std, class_type TSRMLS_CC); -#else - ALLOC_HASHTABLE(intern-std.properties); - zend_hash_init(intern-std.properties, 0, NULL, ZVAL_PTR_DTOR, 0); - - intern-std.ce = class_type; - intern-std.guards = NULL; -#endif - zend_hash_copy(intern-std.properties, class_type-default_properties, (copy_ctor_func_t) zval_add_ref, (void *) tmp, sizeof(zval *)); retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) xmlreader_objects_free_storage, xmlreader_objects_clone TSRMLS_CC); intern-handle =