File tree 2 files changed +28
-0
lines changed
2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -238,6 +238,7 @@ ZEND_API void ZEND_FASTCALL zend_observer_fcall_end(
238
238
zend_execute_data * ex = execute_data -> prev_execute_data ;
239
239
while (ex && (!ex -> func || ex -> func -> type == ZEND_INTERNAL_FUNCTION
240
240
|| !ZEND_OBSERVABLE_FN (ex -> func -> common .fn_flags )
241
+ || !& RUN_TIME_CACHE (& ex -> func -> op_array )
241
242
|| !ZEND_OBSERVER_DATA (& ex -> func -> op_array )
242
243
|| ZEND_OBSERVER_DATA (& ex -> func -> op_array ) == ZEND_OBSERVER_NOT_OBSERVED )) {
243
244
ex = ex -> prev_execute_data ;
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Bug #81430 (Attribute instantiation frame has no run time cache)
3
+ --INI--
4
+ memory_limit=20M
5
+ zend_test.observer.enabled=1
6
+ zend_test.observer.observe_all=1
7
+ --FILE--
8
+ <?php
9
+
10
+ #[\Attribute]
11
+ class A {
12
+ public function __construct () {}
13
+ }
14
+
15
+ #[A]
16
+ function B () {}
17
+
18
+ $ r = new \ReflectionFunction ("B " );
19
+ call_user_func ([$ r ->getAttributes (A::class)[0 ], 'newInstance ' ]);
20
+ ?>
21
+ --EXPECTF--
22
+ <!-- init '%s' -->
23
+ <file '%s'>
24
+ <!-- init A::__construct() -->
25
+ <A::__construct>
26
+ </A::__construct>
27
+ </file '%s'>
You can’t perform that action at this time.
0 commit comments