diff --git a/NEWS b/NEWS
index 99781c8c652..1c1cf6acae6 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,11 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 8.3.13
-- Opcache:
+- SimpleXML:
+ . Fixed bug GH-15837 (Segmentation fault in ext/simplexml/simplexml.c).
+ (nielsdos)
+
+- SOAP:
. Fixed bug #73182 (PHP SOAPClient does not support stream context HTTP
headers in array form). (nielsdos)
. Fixed bug #62900 (Wrong namespace on xsd import error message). (nielsdos)
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index 1047fb4f19c..e0c1bf7926e 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -2540,6 +2540,11 @@ static void php_sxe_iterator_current_key(zend_object_iterator *iter, zval *key)
{
php_sxe_iterator *iterator = (php_sxe_iterator *)iter;
zval *curobj = &iterator->sxe->iter.data;
+ if (Z_ISUNDEF_P(curobj)) {
+ ZVAL_NULL(key);
+ return;
+ }
+
php_sxe_object *intern = Z_SXEOBJ_P(curobj);
xmlNodePtr curnode = NULL;
diff --git a/ext/simplexml/tests/gh15837.phpt b/ext/simplexml/tests/gh15837.phpt
new file mode 100644
index 00000000000..302db064ee0
--- /dev/null
+++ b/ext/simplexml/tests/gh15837.phpt
@@ -0,0 +1,30 @@
+--TEST--
+GH-15837 (Segmentation fault in ext/simplexml/simplexml.c)
+--CREDITS--
+YuanchengJiang
+--FILE--
+
+
+
+
+
+
+
+
+EOF;
+$sxe = new SimpleXMLIterator($xml);
+$rit = new RecursiveIteratorIterator($sxe, RecursiveIteratorIterator::LEAVES_ONLY);
+foreach ($rit as $child) {
+ $ancestry = $child->xpath('ancestor-or-self::*');
+ // Exhaust internal iterator
+ foreach ($ancestry as $ancestor) {
+ }
+}
+var_dump($rit->valid());
+var_dump($rit->key());
+?>
+--EXPECT--
+bool(false)
+NULL