Commit d4f06910225 for php.net

commit d4f069102253dcb9f6274af139001f8184eb826c
Author: Ilija Tovilo <ilija.tovilo@me.com>
Date:   Wed Mar 25 16:54:32 2026 +0100

    Fix incorrect RC-handling for ZEND_EXT_STMT op1

    Fixes GH-21504
    Closes GH-21528

diff --git a/NEWS b/NEWS
index 59848d6ab27..9d69dbaf818 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,7 @@ PHP                                                                        NEWS
     destructors). (iliaal)
   . Fixed ZEND_API mismatch on zend_ce_closure forward decl for Windows+Clang.
     (henderkes)
+  . Fixed bug GH-21504 (Incorrect RC-handling for ZEND_EXT_STMT op1). (ilutov)

 - Iconv:
   . Fixed bug GH-17399 (iconv memory leak on bailout). (iliaal)
diff --git a/Zend/tests/gh21504.inc b/Zend/tests/gh21504.inc
new file mode 100644
index 00000000000..71dc5c2e61f
--- /dev/null
+++ b/Zend/tests/gh21504.inc
@@ -0,0 +1,3 @@
+<?php
+
+'1234' |> var_dump(...);
diff --git a/Zend/tests/gh21504.phpt b/Zend/tests/gh21504.phpt
new file mode 100644
index 00000000000..5fd9eaff91a
--- /dev/null
+++ b/Zend/tests/gh21504.phpt
@@ -0,0 +1,12 @@
+--TEST--
+GH-21504: Incorrect RC-handling for ZEND_EXT_STMT op1
+--FILE--
+<?php
+
+$php_escaped = getenv('TEST_PHP_EXECUTABLE_ESCAPED');
+$cmd = $php_escaped . ' -n -e ' . escapeshellarg(__DIR__ . '/gh21504.inc');
+echo shell_exec($cmd);
+
+?>
+--EXPECT--
+string(4) "1234"
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 80f85f421a3..8c748fc8ccc 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1934,6 +1934,9 @@ static void zend_do_extended_stmt(znode* result) /* {{{ */

 	opline->opcode = ZEND_EXT_STMT;
 	if (result) {
+		if (result->op_type == IS_CONST) {
+			Z_TRY_ADDREF(result->u.constant);
+		}
 		SET_NODE(opline->op1, result);
 	}
 }