[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xmlreader php_xmlreader.c /ext/xmlreader/tests bug42139.phpt

2007-09-20 Thread Rob Richards
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

2007-07-26 Thread Hannes Magnusson
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

2006-10-04 Thread Antony Dovgal
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

2006-09-16 Thread Nuno Lopes
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

2006-09-16 Thread Nuno Lopes
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

2006-06-06 Thread Antony Dovgal
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

2006-05-10 Thread Rob Richards
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 =