diff options
-rw-r--r-- | ext/libxml/libxml.c | 4 | ||||
-rw-r--r-- | ext/libxml/php_libxml.h | 13 |
2 files changed, 16 insertions, 1 deletions
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index dc5b38921f..b2d55c6122 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -942,6 +942,10 @@ int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC) { xmlFreeDoc((xmlDoc *) object->document->ptr); } if (object->document->doc_props != NULL) { + if (object->document->doc_props->classmap) { + zend_hash_destroy(object->document->doc_props->classmap); + FREE_HASHTABLE(object->document->doc_props->classmap); + } efree(object->document->doc_props); } efree(object->document); diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index 9fc35ae610..afc538e847 100644 --- a/ext/libxml/php_libxml.h +++ b/ext/libxml/php_libxml.h @@ -43,10 +43,21 @@ typedef struct { zend_llist *error_list; } php_libxml_globals; +typedef struct _libxml_doc_props { + int formatoutput; + int validateonparse; + int resolveexternals; + int preservewhitespace; + int substituteentities; + int stricterror; + int recover; + HashTable *classmap; +} libxml_doc_props; + typedef struct _php_libxml_ref_obj { void *ptr; int refcount; - void *doc_props; + libxml_doc_props *doc_props; } php_libxml_ref_obj; typedef struct _php_libxml_node_ptr { |