diff options
Diffstat (limited to 'ext/xmlreader/php_xmlreader.c')
-rw-r--r-- | ext/xmlreader/php_xmlreader.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index 40b7d462cd..490c885b23 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -61,11 +61,14 @@ typedef struct _xmlreader_prop_handler { 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) { xmlreader_prop_handler hnd; + zend_string *str; hnd.read_char_func = read_char_func; hnd.read_int_func = read_int_func; hnd.type = rettype; - zend_hash_str_add_mem(prop_handler, name, strlen(name), &hnd, sizeof(xmlreader_prop_handler)); + str = zend_string_init_interned(name, strlen(name), 1); + zend_hash_add_mem(prop_handler, str, &hnd, sizeof(xmlreader_prop_handler)); + zend_string_release(str); } /* }}} */ @@ -122,9 +125,7 @@ zval *xmlreader_get_property_ptr_ptr(zval *object, zval *member, int type, void zend_object_handlers *std_hnd; if (Z_TYPE_P(member) != IS_STRING) { - tmp_member = *member; - zval_copy_ctor(&tmp_member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string_func(member)); member = &tmp_member; } @@ -157,9 +158,7 @@ zval *xmlreader_read_property(zval *object, zval *member, int type, void **cache zend_object_handlers *std_hnd; if (Z_TYPE_P(member) != IS_STRING) { - tmp_member = *member; - zval_copy_ctor(&tmp_member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string_func(member)); member = &tmp_member; } @@ -196,9 +195,7 @@ void xmlreader_write_property(zval *object, zval *member, zval *value, void **ca zend_object_handlers *std_hnd; if (Z_TYPE_P(member) != IS_STRING) { - tmp_member = *member; - zval_copy_ctor(&tmp_member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string_func(member)); member = &tmp_member; } @@ -386,7 +383,7 @@ zend_object *xmlreader_objects_new(zend_class_entry *class_type) { xmlreader_object *intern; - intern = ecalloc(1, sizeof(xmlreader_object) + zend_object_properties_size(class_type)); + intern = zend_object_alloc(sizeof(xmlreader_object), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); intern->prop_handler = &xmlreader_prop_handlers; |