diff options
author | Rob Richards <rrichards@php.net> | 2004-04-07 16:24:17 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2004-04-07 16:24:17 +0000 |
commit | e32f012e65764e3b36c2a8e38e55a07699878939 (patch) | |
tree | 76b989f8e097a49de1ce250bd0d5d463570d22cc /ext/xml/xml.c | |
parent | c534a9e782b6cf3b49932f96a485128702447ce4 (diff) | |
download | php-git-e32f012e65764e3b36c2a8e38e55a07699878939.tar.gz |
Fix bug #27821 xml_parse segfaults when xml_set_object called from class method
fix memleaks in compat.c
Diffstat (limited to 'ext/xml/xml.c')
-rw-r--r-- | ext/xml/xml.c | 10 |
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; } /* }}} */ |