Commit 59df4185886 for php.net
commit 59df4185886032c8f69c0b227eec1f026c95842e
Author: ndossche <7771979+ndossche@users.noreply.github.com>
Date: Sun Jun 14 21:03:09 2026 +0200
Fix refcount mistake in \Io\Poll\Backend::getAvailableBackends()
diff --git a/ext/standard/io_poll.c b/ext/standard/io_poll.c
index 05e54696d69..f01f8236d51 100644
--- a/ext/standard/io_poll.c
+++ b/ext/standard/io_poll.c
@@ -414,7 +414,7 @@ PHP_METHOD(Io_Poll_Backend, getAvailableBackends)
if (php_poll_is_backend_available(backends[i])) {
const char *name = php_io_poll_backend_type_to_name(backends[i]);
zval enum_case;
- ZVAL_OBJ(&enum_case, zend_enum_get_case_cstr(php_io_poll_backend_class_entry, name));
+ ZVAL_OBJ_COPY(&enum_case, zend_enum_get_case_cstr(php_io_poll_backend_class_entry, name));
add_next_index_zval(return_value, &enum_case);
}
}
diff --git a/ext/standard/tests/poll/poll_backend_getAvailableBackends.phpt b/ext/standard/tests/poll/poll_backend_getAvailableBackends.phpt
new file mode 100644
index 00000000000..9ea78d87d1d
--- /dev/null
+++ b/ext/standard/tests/poll/poll_backend_getAvailableBackends.phpt
@@ -0,0 +1,12 @@
+--TEST--
+\Io\Poll\Backend::getAvailableBackends() - loop
+--FILE--
+<?php
+$objs = [];
+foreach (($expr1 = \Io\Poll\Backend::getAvailableBackends()) as $expr2) {
+ $objs[] = $expr2;
+}
+echo "Okay\n";
+?>
+--EXPECT--
+Okay