From: Christoph M. Becker Date: Mon, 3 Feb 2020 22:38:40 +0000 (+0100) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f00afaeed59d5d2e175681f22292589975ed8c16;p=php Merge branch 'PHP-7.4' * PHP-7.4: Fix #79191: Error in SoapClient ctor disables DOMDocument::save() --- f00afaeed59d5d2e175681f22292589975ed8c16 diff --cc ext/xmlwriter/php_xmlwriter.c index fc1eb822d0,5cb141dad3..a2e3acacaf --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@@ -89,21 -110,25 +89,29 @@@ typedef int (*xmlwriter_read_int_t)(xml static zend_object_handlers xmlwriter_object_handlers; - /* {{{ xmlwriter_object_free_storage */ - static void xmlwriter_object_free_storage(zend_object *object) + /* {{{{ xmlwriter_object_dtor */ + static void xmlwriter_object_dtor(zend_object *object) { ze_xmlwriter_object *intern = php_xmlwriter_fetch_object(object); - if (!intern) { - return; - } + + /* freeing the resource here may leak, but otherwise we may use it after it has been freed */ - if (intern->xmlwriter_ptr) { - xmlwriter_free_resource_ptr(intern->xmlwriter_ptr); + if (intern->ptr) { + xmlFreeTextWriter(intern->ptr); + intern->ptr = NULL; + } + if (intern->output) { + xmlBufferFree(intern->output); + intern->output = NULL; } - intern->xmlwriter_ptr = NULL; + zend_objects_destroy_object(object); + } + /* }}} */ + + /* {{{ xmlwriter_object_free_storage */ + static void xmlwriter_object_free_storage(zend_object *object) + { + ze_xmlwriter_object *intern = php_xmlwriter_fetch_object(object); + zend_object_std_dtor(&intern->std); } /* }}} */