summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/dom/nodelist.c2
-rw-r--r--ext/dom/tests/bug38438.phpt13
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