com php-src: Only allocate NULL return value if it's actually used: Zend/tests/methods-on-non-objects-return-unused.phpt Zend/zend_vm_def.h
Zend/zend_vm_execute.h
| From: | Tjerk Anne Meesters | Date: | Sun, 06 Jul 2014 10:50:32 +0000 |
| Subject: | com php-src: Only allocate NULL return value if it's actually used: Zend/tests/methods-on-non-objects-return-unused.phpt Zend/zend_vm_def.h Zend/zend_vm_execute.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-82140@lists.php.net to get a copy of this message | ||
Commit: dc68aa32bc33afcf9c42494c6db498f7c47c93e9
Author: Timm Friebe <thekid@thekid.de> Sun, 6 Jul 2014 12:50:32 +0200
Parents: a782f697df9c944f0645d56c078847d8316f8b9b
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=dc68aa32bc33afcf9c42494c6db498f7c47c93e9
Log:
Only allocate NULL return value if it's actually used
Changed paths:
A Zend/tests/methods-on-non-objects-return-unused.phpt
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
diff --git a/Zend/tests/methods-on-non-objects-return-unused.phpt b/Zend/tests/methods-on-non-objects-return-unused.phpt new file mode 100755 index 0000000..19703b4 --- /dev/null +++ b/Zend/tests/methods-on-non-objects-return-unused.phpt @@ -0,0 +1,15 @@ +--TEST-- +Catch method calls on non-objects without using return value +--FILE-- +<?php +set_error_handler(function($code, $message) { + echo "Caught\n"; +}); + +$x= null; +$x->method(); +echo "Alive\n"; +?> +--EXPECTF-- +Caught +Alive diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 32b910f..4af4f98 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2482,9 +2482,11 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index f323381..e745dd0 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -9325,9 +9325,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -10212,9 +10214,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -11100,9 +11104,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -12568,9 +12574,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -15828,9 +15836,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -18196,9 +18206,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -20525,9 +20537,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -24004,9 +24018,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -25668,9 +25684,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -27098,9 +27116,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -28434,9 +28454,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -30198,9 +30220,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -33459,9 +33483,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -35593,9 +35619,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -37782,9 +37810,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -40972,9 +41002,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); }
diff --git a/Zend/tests/methods-on-non-objects-return-unused.phpt b/Zend/tests/methods-on-non-objects-return-unused.phpt new file mode 100755 index 0000000..19703b4 --- /dev/null +++ b/Zend/tests/methods-on-non-objects-return-unused.phpt @@ -0,0 +1,15 @@ +--TEST-- +Catch method calls on non-objects without using return value +--FILE-- +<?php +set_error_handler(function($code, $message) { + echo "Caught\n"; +}); + +$x= null; +$x->method(); +echo "Alive\n"; +?> +--EXPECTF-- +Caught +Alive diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 32b910f..4af4f98 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2482,9 +2482,11 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index f323381..e745dd0 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -9325,9 +9325,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -10212,9 +10214,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -11100,9 +11104,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -12568,9 +12574,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -15828,9 +15836,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -18196,9 +18206,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -20525,9 +20537,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -24004,9 +24018,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -25668,9 +25684,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -27098,9 +27116,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -28434,9 +28454,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -30198,9 +30220,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -33459,9 +33483,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -35593,9 +35619,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -37782,9 +37810,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); } @@ -40972,9 +41002,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H } } while (nested); - ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); - EX_T(opline->result.var).var.fcall_returned_reference = 0; - EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + if (RETURN_VALUE_USED(opline)) { + ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); + EX_T(opline->result.var).var.fcall_returned_reference = 0; + EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; + } ZEND_VM_NEXT_OPCODE(); }