summaryrefslogtreecommitdiff
path: root/ext/dom/php_dom.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dom/php_dom.c')
-rw-r--r--ext/dom/php_dom.c58
1 files changed, 26 insertions, 32 deletions
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index 17bf1811ea..72ae3c3ffe 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -18,8 +18,6 @@
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -302,10 +300,13 @@ static int dom_write_na(dom_object *obj, zval *newval)
static void dom_register_prop_handler(HashTable *prop_handler, char *name, size_t name_len, dom_read_t read_func, dom_write_t write_func)
{
dom_prop_handler hnd;
+ zend_string *str;
hnd.read_func = read_func ? read_func : dom_read_na;
hnd.write_func = write_func ? write_func : dom_write_na;
- zend_hash_str_add_mem(prop_handler, name, name_len, &hnd, sizeof(dom_prop_handler));
+ str = zend_string_init_interned(name, name_len, 1);
+ zend_hash_add_mem(prop_handler, str, &hnd, sizeof(dom_prop_handler));
+ zend_string_release_ex(str, 1);
}
/* }}} */
@@ -316,11 +317,10 @@ static zval *dom_get_property_ptr_ptr(zval *object, zval *member, int type, void
zval *retval = NULL;
if (!obj->prop_handler || !zend_hash_exists(obj->prop_handler, member_str)) {
- zend_object_handlers *std_hnd = zend_get_std_object_handlers();
- retval = std_hnd->get_property_ptr_ptr(object, member, type, cache_slot);
+ retval = zend_std_get_property_ptr_ptr(object, member, type, cache_slot);
}
- zend_string_release(member_str);
+ zend_string_release_ex(member_str, 0);
return retval;
}
/* }}} */
@@ -347,11 +347,10 @@ zval *dom_read_property(zval *object, zval *member, int type, void **cache_slot,
retval = &EG(uninitialized_zval);
}
} else {
- zend_object_handlers *std_hnd = zend_get_std_object_handlers();
- retval = std_hnd->read_property(object, member, type, cache_slot, rv);
+ retval = zend_std_read_property(object, member, type, cache_slot, rv);
}
- zend_string_release(member_str);
+ zend_string_release_ex(member_str, 0);
return retval;
}
/* }}} */
@@ -369,11 +368,10 @@ void dom_write_property(zval *object, zval *member, zval *value, void **cache_sl
if (hnd) {
hnd->write_func(obj, value);
} else {
- zend_object_handlers *std_hnd = zend_get_std_object_handlers();
- std_hnd->write_property(object, member, value, cache_slot);
+ zend_std_write_property(object, member, value, cache_slot);
}
- zend_string_release(member_str);
+ zend_string_release_ex(member_str, 0);
}
/* }}} */
@@ -399,14 +397,13 @@ static int dom_property_exists(zval *object, zval *member, int check_empty, void
} else if (check_empty == 0) {
retval = (Z_TYPE(tmp) != IS_NULL);
}
- zval_dtor(&tmp);
+ zval_ptr_dtor(&tmp);
}
} else {
- zend_object_handlers *std_hnd = zend_get_std_object_handlers();
- retval = std_hnd->has_property(object, member, check_empty, cache_slot);
+ retval = zend_std_has_property(object, member, check_empty, cache_slot);
}
- zend_string_release(member_str);
+ zend_string_release_ex(member_str, 0);
return retval;
}
/* }}} */
@@ -440,7 +437,7 @@ static HashTable* dom_get_debug_info_helper(zval *object, int *is_temp) /* {{{ *
}
if (Z_TYPE(value) == IS_OBJECT) {
- zval_dtor(&value);
+ zval_ptr_dtor(&value);
ZVAL_NEW_STR(&value, object_str);
zend_string_addref(object_str);
}
@@ -448,7 +445,7 @@ static HashTable* dom_get_debug_info_helper(zval *object, int *is_temp) /* {{{ *
zend_hash_add(debug_info, string_key, &value);
} ZEND_HASH_FOREACH_END();
- zend_string_release(object_str);
+ zend_string_release_ex(object_str, 0);
return debug_info;
}
@@ -499,12 +496,12 @@ PHP_FUNCTION(dom_import_simplexml)
}
/* }}} */
-static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool hash_copy);
+static dom_object* dom_objects_set_class(zend_class_entry *class_type);
static zend_object *dom_objects_store_clone_obj(zval *zobject) /* {{{ */
{
dom_object *intern = Z_DOMOBJ_P(zobject);
- dom_object *clone = dom_objects_set_class(intern->std.ce, 0);
+ dom_object *clone = dom_objects_set_class(intern->std.ce);
clone->std.handlers = dom_get_obj_handlers();
@@ -595,7 +592,7 @@ PHP_MINIT_FUNCTION(dom)
{
zend_class_entry ce;
- memcpy(&dom_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ memcpy(&dom_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
dom_object_handlers.offset = XtOffsetOf(dom_object, std);
dom_object_handlers.free_obj = dom_objects_free_storage;
dom_object_handlers.read_property = dom_read_property;
@@ -1069,9 +1066,9 @@ void dom_namednode_iter(dom_object *basenode, int ntype, dom_object *intern, xml
}
/* }}} */
-static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool hash_copy) /* {{{ */
+static dom_object* dom_objects_set_class(zend_class_entry *class_type) /* {{{ */
{
- dom_object *intern = ecalloc(1, sizeof(dom_object) + zend_object_properties_size(class_type));
+ dom_object *intern = zend_object_alloc(sizeof(dom_object), class_type);
zend_class_entry *base_class = class_type;
while ((base_class->type != ZEND_INTERNAL_CLASS || base_class->info.internal.module->module_number != dom_module_entry.module_number) && base_class->parent != NULL) {
@@ -1081,9 +1078,7 @@ static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool
intern->prop_handler = zend_hash_find_ptr(&classes, base_class->name);
zend_object_std_init(&intern->std, class_type);
- if (hash_copy) {
- object_properties_init(&intern->std, class_type);
- }
+ object_properties_init(&intern->std, class_type);
return intern;
}
@@ -1092,7 +1087,7 @@ static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool
/* {{{ dom_objects_new */
zend_object *dom_objects_new(zend_class_entry *class_type)
{
- dom_object *intern = dom_objects_set_class(class_type, 1);
+ dom_object *intern = dom_objects_set_class(class_type);
intern->std.handlers = dom_get_obj_handlers();
return &intern->std;
}
@@ -1102,10 +1097,9 @@ zend_object *dom_objects_new(zend_class_entry *class_type)
/* {{{ zend_object dom_xpath_objects_new(zend_class_entry *class_type) */
zend_object *dom_xpath_objects_new(zend_class_entry *class_type)
{
- dom_xpath_object *intern = ecalloc(1, sizeof(dom_xpath_object) + zend_object_properties_size(class_type));
+ dom_xpath_object *intern = zend_object_alloc(sizeof(dom_xpath_object), class_type);
- ALLOC_HASHTABLE(intern->registered_phpfunctions);
- zend_hash_init(intern->registered_phpfunctions, 0, NULL, ZVAL_PTR_DTOR, 0);
+ intern->registered_phpfunctions = zend_new_array(0);
intern->dom.prop_handler = &dom_xpath_prop_handlers;
intern->dom.std.handlers = &dom_xpath_object_handlers;
@@ -1157,7 +1151,7 @@ zend_object *dom_nnodemap_objects_new(zend_class_entry *class_type) /* {{{ */
dom_object *intern;
dom_nnodemap_object *objmap;
- intern = dom_objects_set_class(class_type, 1);
+ intern = dom_objects_set_class(class_type);
intern->ptr = emalloc(sizeof(dom_nnodemap_object));
objmap = (dom_nnodemap_object *)intern->ptr;
ZVAL_UNDEF(&objmap->baseobj_zv);
@@ -1199,7 +1193,7 @@ PHP_DOM_EXPORT zend_bool php_dom_create_object(xmlNodePtr obj, zval *return_valu
}
if ((intern = (dom_object *) php_dom_object_get_data((void *) obj))) {
- GC_REFCOUNT(&intern->std)++;
+ GC_ADDREF(&intern->std);
ZVAL_OBJ(return_value, &intern->std);
return 1;
}