cvs: php-src(PHP_5_2) /ext/dom php_dom.c /ext/simplexml simplexml.c

From: Date: Mon, 05 Jun 2006 16:53:22 +0000
Subject: cvs: php-src(PHP_5_2) /ext/dom php_dom.c /ext/simplexml simplexml.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-38613@lists.php.net to get a copy of this message
zeev Mon Jun 5 16:53:22 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/dom php_dom.c /php-src/ext/simplexml simplexml.c Log: Final ze1_compat restoration - it was mostly done by hand, so if anybody spots any (new) problems, let me know. Test wise, the same tests that failed before are failing now. http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/php_dom.c?r1=1.73.2.12.2.4&r2=1.73.2.12.2.5&diff_format=u Index: php-src/ext/dom/php_dom.c diff -u php-src/ext/dom/php_dom.c:1.73.2.12.2.4 php-src/ext/dom/php_dom.c:1.73.2.12.2.5 --- php-src/ext/dom/php_dom.c:1.73.2.12.2.4 Mon May 22 17:12:25 2006 +++ php-src/ext/dom/php_dom.c Mon Jun 5 16:53:21 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.c,v 1.73.2.12.2.4 2006/05/22 17:12:25 rrichards Exp $ */ +/* $Id: php_dom.c,v 1.73.2.12.2.5 2006/06/05 16:53:21 zeev Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -69,6 +69,7 @@ zend_class_entry *dom_namespace_node_class_entry; zend_object_handlers dom_object_handlers; +zend_object_handlers dom_ze1_object_handlers; static HashTable classes; @@ -490,12 +491,25 @@ return retval; } + +zend_object_value dom_objects_ze1_clone_obj(zval *zobject TSRMLS_DC) +{ + php_error(E_ERROR, "Cannot clone object of class %s due to 'zend.ze1_compatibility_mode'", Z_OBJCE_P(zobject)->name); + /* Return zobject->value.obj just to satisfy compiler */ + return zobject->value.obj; +} + static zend_function_entry dom_functions[] = { PHP_FE(dom_import_simplexml, NULL) {NULL, NULL, NULL} }; static zend_object_handlers* dom_get_obj_handlers(TSRMLS_D) { + if (EG(ze1_compatibility_mode)) { + return &dom_ze1_object_handlers; + } else { + return &dom_object_handlers; + } return &dom_object_handlers; } @@ -535,6 +549,13 @@ dom_object_handlers.clone_obj = dom_objects_store_clone_obj; dom_object_handlers.has_property = dom_property_exists; + memcpy(&dom_ze1_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + dom_ze1_object_handlers.read_property = dom_read_property; + dom_ze1_object_handlers.write_property = dom_write_property; + dom_object_handlers.get_property_ptr_ptr = dom_get_property_ptr_ptr; + dom_ze1_object_handlers.clone_obj = dom_objects_ze1_clone_obj; + dom_ze1_object_handlers.has_property = dom_property_exists; + zend_hash_init(&classes, 0, NULL, NULL, 1); INIT_CLASS_ENTRY(ce, "DOMException", php_dom_domexception_class_functions); http://cvs.php.net/viewcvs.cgi/php-src/ext/simplexml/simplexml.c?r1=1.151.2.22.2.5&r2=1.151.2.22.2.6&diff_format=u Index: php-src/ext/simplexml/simplexml.c diff -u php-src/ext/simplexml/simplexml.c:1.151.2.22.2.5 php-src/ext/simplexml/simplexml.c:1.151.2.22.2.6 --- php-src/ext/simplexml/simplexml.c:1.151.2.22.2.5 Tue May 23 22:24:43 2006 +++ php-src/ext/simplexml/simplexml.c Mon Jun 5 16:53:21 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.151.2.22.2.5 2006/05/23 22:24:43 helly Exp $ */ +/* $Id: simplexml.c,v 1.151.2.22.2.6 2006/06/05 16:53:21 zeev Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1689,6 +1689,38 @@ sxe_count_elements }; +static zend_object_handlers sxe_ze1_object_handlers = { + ZEND_OBJECTS_STORE_HANDLERS, + sxe_property_read, + sxe_property_write, + sxe_dimension_read, + sxe_dimension_write, + sxe_property_get_adr, + sxe_get_value, /* get */ + NULL, + sxe_property_exists, + sxe_property_delete, + sxe_dimension_exists, + sxe_dimension_delete, + sxe_properties_get, + NULL, /* zend_get_std_object_handlers()->get_method,*/ + NULL, /* zend_get_std_object_handlers()->call_method,*/ + NULL, /* zend_get_std_object_handlers()->get_constructor, */ + NULL, /* zend_get_std_object_handlers()->get_class_entry,*/ + NULL, /* zend_get_std_object_handlers()->get_class_name,*/ + sxe_objects_compare, + sxe_object_cast, + sxe_count_elements +}; + +static zend_object_value sxe_object_ze1_clone(zval *zobject TSRMLS_DC) +{ + php_error(E_ERROR, "Cannot clone object of class %s due to 'zend.ze1_compatibility_mode'", Z_OBJCE_P(zobject)->name); + /* Return zobject->value.obj just to satisfy compiler */ + /* FIXME: Should not be a fatal */ + return zobject->value.obj; +} + /* {{{ sxe_object_clone() */ static void @@ -2239,6 +2271,12 @@ sxe_object_handlers.get_class_entry = zend_get_std_object_handlers()->get_class_entry; sxe_object_handlers.get_class_name = zend_get_std_object_handlers()->get_class_name; + sxe_ze1_object_handlers.get_method = zend_get_std_object_handlers()->get_method; + sxe_ze1_object_handlers.get_constructor = zend_get_std_object_handlers()->get_constructor; + sxe_ze1_object_handlers.get_class_entry = zend_get_std_object_handlers()->get_class_entry; + sxe_ze1_object_handlers.get_class_name = zend_get_std_object_handlers()->get_class_name; + sxe_ze1_object_handlers.clone_obj = sxe_object_ze1_clone; + #ifdef HAVE_SPL if (zend_get_module_started("spl") == SUCCESS) { PHP_MINIT(spl_sxe)(INIT_FUNC_ARGS_PASSTHRU); @@ -2265,7 +2303,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "Simplexml support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.22.2.5 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.22.2.6 $"); php_info_print_table_row(2, "Schema support", #ifdef LIBXML_SCHEMAS_ENABLED "enabled");

« previous php.cvs (#38613) next »