summaryrefslogtreecommitdiff
path: root/ext/xml/xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/xml/xml.c')
-rw-r--r--ext/xml/xml.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index 1f29585df0..f17601f8eb 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -380,6 +380,9 @@ static void xml_parser_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
if (parser->baseURI) {
efree(parser->baseURI);
}
+ if (parser->object) {
+ zval_ptr_dtor(&parser->object);
+ }
efree(parser);
}
@@ -1141,14 +1144,17 @@ PHP_FUNCTION(xml_set_object)
if (parser->object) {
zval_ptr_dtor(&parser->object);
}
-
- parser->object = *mythis;
/* please leave this commented - or ask thies@thieso.net before doing it (again) */
/* #ifdef ZEND_ENGINE_2
zval_add_ref(&parser->object);
#endif */
+ ALLOC_ZVAL(parser->object);
+ *parser->object = **mythis;
+ zval_copy_ctor(parser->object);
+ INIT_PZVAL(parser->object);
+
RETVAL_TRUE;
}
/* }}} */