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 @@ +