]> granicus.if.org Git - php/commitdiff
fig segv on make install (double destroy badness)
authorSterling Hughes <sterling@php.net>
Thu, 5 Jun 2003 17:48:25 +0000 (17:48 +0000)
committerSterling Hughes <sterling@php.net>
Thu, 5 Jun 2003 17:48:25 +0000 (17:48 +0000)
ext/dom/php_dom.c

index c78c6c242636d59cdd2e2466aa817d7d10e628b9..bbccaf05211a68cb751719ce237af42920f4466c 100644 (file)
@@ -37,6 +37,8 @@
 #define PHP_XPATH 1
 #define PHP_XPTR 2
 
+extern int xml_parser_inited;
+
 zend_object_handlers dom_object_handlers;
 
 static HashTable classes;
@@ -542,8 +544,10 @@ PHP_MINIT_FUNCTION(dom)
        REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENUMERATION",     XML_ATTRIBUTE_ENUMERATION,      CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NOTATION",        XML_ATTRIBUTE_NOTATION,         CONST_CS | CONST_PERSISTENT);
 
-
-       xmlInitParser();
+       if (!xml_parser_inited) {
+               xmlInitThreads();
+               xml_parser_inited = 1;
+       }
 
        return SUCCESS;
 }
@@ -571,7 +575,10 @@ PHP_MINFO_FUNCTION(dom)
 
 PHP_MSHUTDOWN_FUNCTION(dom)
 {
-       xmlCleanupParser();
+       if (xml_parser_inited) {
+               xmlCleanupParser();
+               xml_parser_inited = 0;
+       }
 
        zend_hash_destroy(&dom_domstringlist_prop_handlers);
        zend_hash_destroy(&dom_namelist_prop_handlers);