File tree Expand file tree Collapse file tree 3 files changed +8
-77
lines changed Expand file tree Collapse file tree 3 files changed +8
-77
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -9,32 +9,16 @@ $doc->loadXML(<<<'XML'
9
9
<?xml version="1.0"?>
10
10
<!DOCTYPE books [
11
11
<!ENTITY test "entity is only for test purposes">
12
- <!ENTITY myimage PUBLIC "-" "mypicture.gif" NDATA GIF>
13
12
]>
14
13
<container/>
15
14
XML);
16
- $ ref1 = $ doc ->createEntityReference ("test " );
17
- $ ref2 = $ doc ->createEntityReference ("myimage " );
18
- $ entity1 = $ doc ->doctype ->entities [0 ];
19
- $ entity2 = $ doc ->doctype ->entities [1 ];
20
-
21
- // Entity order depends on addresses
22
- if ($ entity1 ->nodeName !== "test " ) {
23
- [$ entity1 , $ entity2 ] = [$ entity2 , $ entity1 ];
24
- }
25
-
26
- var_dump ($ entity1 ->nodeName , $ entity1 ->parentNode ->nodeName );
27
- var_dump ($ entity2 ->nodeName , $ entity2 ->parentNode ->nodeName );
15
+ $ entity = $ doc ->doctype ->entities [0 ];
16
+ var_dump ($ entity ->nodeName , $ entity ->parentNode ->nodeName );
28
17
$ doc ->removeChild ($ doc ->doctype );
29
- var_dump ($ entity1 ->nodeName , $ entity1 ->parentNode );
30
- var_dump ($ entity2 ->nodeName , $ entity2 ->parentNode );
18
+ var_dump ($ entity ->nodeName , $ entity ->parentNode );
31
19
?>
32
20
--EXPECT--
33
21
string(4) "test"
34
22
string(5) "books"
35
- string(7) "myimage"
36
- string(5) "books"
37
23
string(4) "test"
38
24
NULL
39
- string(7) "myimage"
40
- NULL
Original file line number Diff line number Diff line change @@ -208,10 +208,12 @@ static void php_libxml_node_free(xmlNodePtr node)
208
208
* dtd is attached to the document. This works around the issue by inspecting the parent directly. */
209
209
case XML_ENTITY_DECL : {
210
210
xmlEntityPtr entity = (xmlEntityPtr ) node ;
211
- if (entity -> etype != XML_INTERNAL_PREDEFINED_ENTITY ) {
212
- php_libxml_unlink_entity_decl (entity );
213
- xmlFreeEntity (entity );
211
+ php_libxml_unlink_entity_decl (entity );
212
+ if (entity -> orig != NULL ) {
213
+ xmlFree ((char * ) entity -> orig );
214
+ entity -> orig = NULL ;
214
215
}
216
+ xmlFreeNode (node );
215
217
break ;
216
218
}
217
219
case XML_NOTATION_NODE : {
@@ -1382,15 +1384,6 @@ PHP_LIBXML_API void php_libxml_node_free_resource(xmlNodePtr node)
1382
1384
case XML_DOCUMENT_NODE :
1383
1385
case XML_HTML_DOCUMENT_NODE :
1384
1386
break ;
1385
- case XML_ENTITY_REF_NODE :
1386
- /* Entity reference nodes are special: their children point to entity declarations,
1387
- * but they don't own the declarations and therefore shouldn't free the children.
1388
- * Moreover, there can be N>1 reference nodes for a single entity declarations. */
1389
- php_libxml_unregister_node (node );
1390
- if (node -> parent == NULL ) {
1391
- php_libxml_node_free (node );
1392
- }
1393
- break ;
1394
1387
default :
1395
1388
if (node -> parent == NULL || node -> type == XML_NAMESPACE_DECL ) {
1396
1389
php_libxml_node_free_list ((xmlNodePtr ) node -> children );
You can’t perform that action at this time.
0 commit comments