]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 3 Feb 2020 22:38:40 +0000 (23:38 +0100)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 3 Feb 2020 22:38:40 +0000 (23:38 +0100)
* PHP-7.4:
  Fix #79191: Error in SoapClient ctor disables DOMDocument::save()

1  2 
ext/libxml/libxml.c
ext/xmlwriter/php_xmlwriter.c

Simple merge
index fc1eb822d03d15e403d2946cf3118d0e9ff3f002,5cb141dad399ca96d04bd0a52df0ff7023ce8512..a2e3acacaf022a4818b42f3b2867345d46001592
@@@ -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);
  }
  /* }}} */