diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/dom/nodelist.c | 2 | ||||
-rw-r--r-- | ext/dom/tests/bug38438.phpt | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/ext/dom/nodelist.c b/ext/dom/nodelist.c index 8989f907ad..268879bc16 100644 --- a/ext/dom/nodelist.c +++ b/ext/dom/nodelist.c @@ -134,7 +134,7 @@ PHP_FUNCTION(dom_nodelist_item) zval_copy_ctor(return_value); return; } - } else { + } else if (objmap->baseobj) { nodep = dom_object_get_node(objmap->baseobj); if (nodep) { if (objmap->nodetype == XML_ATTRIBUTE_NODE || objmap->nodetype == XML_ELEMENT_NODE) { diff --git a/ext/dom/tests/bug38438.phpt b/ext/dom/tests/bug38438.phpt new file mode 100644 index 0000000000..f51252832c --- /dev/null +++ b/ext/dom/tests/bug38438.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #38438 (DOMNodeList->item(0) segfault on empty NodeList) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +$list = new DOMNodeList(); +var_dump($list->item(0)); +echo "OK\n"; +?> +--EXPECT-- +NULL +OK |