Commit 83b7358
committed
Fix GH-21478: Forward read_property to real instance for initialized lazy proxies
When an initialized lazy proxy has __get/__isset, zend_std_read_property()
was calling the magic method on the proxy itself before forwarding to the
real instance at uninit_error. This caused double invocations: __get fired
on both the real instance and the proxy.
For pure reads (BP_VAR_R, BP_VAR_IS), forward directly to the real instance
before attempting magic methods on the proxy. Write contexts (BP_VAR_W/RW)
are excluded because read_property with those types is used as a fallback
from get_property_ptr_ptr for reference operations involving __get.
Closes GH-214781 parent 30b2d77 commit 83b7358
File tree
4 files changed
+39
-2
lines changed- Zend
- tests/lazy_objects
4 files changed
+39
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | 39 | | |
41 | 40 | | |
42 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | 39 | | |
41 | 40 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
893 | 893 | | |
894 | 894 | | |
895 | 895 | | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
896 | 903 | | |
897 | 904 | | |
898 | 905 | | |
| |||
0 commit comments