[php-src] PR #25458: Fix GH-25449: Keep by-ref containers out of converted FUNC_ARG fetches
| From: | iliaal | Date: | Sat, 14 Nov 2026 14:52:20 +0000 |
| Subject: | [php-src] PR #25458: Fix GH-25449: Keep by-ref containers out of converted FUNC_ARG fetches | ||
| Groups: | php.git-pulls | ||
| Request: | Send a blank email to git-pulls+get-40644@lists.php.net to get a copy of this message | ||
Pull Request: https://github.com/php/php-src/pull/25458
Author: iliaal
When
g() returns by reference and the callee of f(g()['k']) is
not known at compile time, OPcache passes null to f() and debug builds assert in
FETCH_DIM_R. Since GH-20628, FETCH_DIM_R and FETCH_OBJ_R expect a VAR container to be unwrapped
already, but pass 4 converts the FUNC_ARG fetch to its _R form while the container is still the VAR
result of the by-ref call; an assignment by reference such as f(($y =
&$x)['k']) hits the same assertion. Retype the call result to TMP, as the
compiler emits for a known callee, and keep the FUNC_ARG fetch for any other producer except an
already converted read fetch.
Fixes #25449