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");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php