From: Sterling Hughes Date: Mon, 9 Jun 2003 04:01:11 +0000 (+0000) Subject: ok, this is a zend bug. X-Git-Tag: RELEASE_1_0_2~346 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=21d90d6ac40eebf68b52a8f0691c5d956d0187ba;p=php ok, this is a zend bug. --- diff --git a/ext/simplexml/examples/book.php b/ext/simplexml/examples/book.php index 762f855c52..0416df861b 100644 --- a/ext/simplexml/examples/book.php +++ b/ext/simplexml/examples/book.php @@ -1,6 +1,7 @@ book; - +$books = simplexml_load_file('book.xml'); +//var_dump($books); +$books = $books->book; foreach ($books as $book) { echo "{$book->title} was written by {$book->author}\n"; } diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 7eb522d785..83de2cc692 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -783,13 +783,14 @@ sxe_object_dtor(void *object, zend_object_handle handle TSRMLS_DC) sxe = (php_sxe_object *) object; + FREE_HASHTABLE(sxe->zo.properties); + if (--sxe->document->refcount > 0) { return; } - xmlFreeDoc(sxe->document->ptr); - FREE_HASHTABLE(sxe->zo.properties); - + efree(sxe->document); + if (sxe->xpath) { xmlXPathFreeContext(sxe->xpath); } @@ -858,8 +859,8 @@ PHP_FUNCTION(simplexml_load_file) sxe = php_sxe_object_new(TSRMLS_C); sxe->document = emalloc(sizeof(simplexml_ref_obj)); - sxe->document->refcount = 1; sxe->document->ptr = (void *) xmlParseFile(filename); + sxe->document->refcount = 1; if (sxe->document->ptr == NULL) { efree(sxe->document); RETURN_FALSE; @@ -893,7 +894,7 @@ PHP_FUNCTION(simplexml_load_string) RETURN_FALSE; } sxe->nsmap = xmlHashCreate(10); - + return_value->type = IS_OBJECT; return_value->value.obj = php_sxe_register_object(sxe TSRMLS_CC); }