From 3b6a48ef744306ed81c2535959a9236b62f90dbd Mon Sep 17 00:00:00 2001 From: NathanFreeman <1056159381@qq.com> Date: Mon, 10 Aug 2026 10:20:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E7=A8=8B=E5=BA=8F=E9=80=9A=E8=BF=87=20Zend=20VM=20?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=87=AA=E8=BA=AB=E7=9A=84=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=AD=A4=E6=97=B6=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E8=BF=87=E5=A4=9A=EF=BC=8C=E4=BC=9A=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=AE=B5=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20(#47)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: tianfenghan Reviewed-on: https://git.code-galaxy.net/aot/compiler/pulls/47 Co-authored-by: NathanFreeman <1056159381@qq.com> Co-committed-by: NathanFreeman <1056159381@qq.com> --- src/CompilerBase.php | 4 ++- tests/compiler/include_require/001.phpt | 35 ++++++++++++++++++++++ tests/compiler/include_require/Hello.php | 3 ++ tests/compiler/include_require/no-leak.ini | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/compiler/include_require/001.phpt create mode 100644 tests/compiler/include_require/Hello.php create mode 100644 tests/compiler/include_require/no-leak.ini diff --git a/src/CompilerBase.php b/src/CompilerBase.php index f5852a39..8939283c 100644 --- a/src/CompilerBase.php +++ b/src/CompilerBase.php @@ -3544,7 +3544,9 @@ class CompilerBase implements PropertyAccessContext break; } - return 'php::include(' . $this->parseIdentifier($expr->expr) . ', ' . $type . ')'; + $fileName = $this->parseIdentifier($expr->expr); + + return "php::include(php::Var($fileName), $type)"; } protected function parseScalarFloat(Node\Scalar\Float_ $expr): string diff --git a/tests/compiler/include_require/001.phpt b/tests/compiler/include_require/001.phpt new file mode 100644 index 00000000..56eedaa1 --- /dev/null +++ b/tests/compiler/include_require/001.phpt @@ -0,0 +1,35 @@ +--TEST-- +include/require unwind safely when ZendVM calls a compiled function that throws +--ENV-- +PHPRC=tests/compiler/include_require/no-leak.ini +--FILE-- + +--EXPECT-- +include ArgumentCountError +require ArgumentCountError diff --git a/tests/compiler/include_require/Hello.php b/tests/compiler/include_require/Hello.php new file mode 100644 index 00000000..96b684de --- /dev/null +++ b/tests/compiler/include_require/Hello.php @@ -0,0 +1,3 @@ +