diff options
author | Dmitry Stogov <dmitry@php.net> | 2006-08-07 15:15:22 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2006-08-07 15:15:22 +0000 |
commit | f5543a428dc1593f200c2b245bed62477b9922a0 (patch) | |
tree | 70af3866fd68c2847b43a2c6df84075ec7ad4432 | |
parent | ee82fb781a21a272bea8535e6ee150d4d927c10a (diff) | |
download | php-git-f5543a428dc1593f200c2b245bed62477b9922a0.tar.gz |
Fixed bug #38287 (static variables mess up global vars)
-rw-r--r-- | NEWS | 1 | ||||
-rwxr-xr-x | Zend/tests/bug38287.phpt | 45 | ||||
-rw-r--r-- | Zend/zend.h | 5 | ||||
-rw-r--r-- | Zend/zend_objects_API.c | 7 | ||||
-rw-r--r-- | Zend/zend_objects_API.h | 1 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 8 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 188 |
7 files changed, 204 insertions, 51 deletions
@@ -41,6 +41,7 @@ PHP NEWS (Marcus) - Fixed bug #38289 (segfault in session_decode() when _SESSION is NULL). (Tony) +- Fixed Bug #38287 (static variables mess up global vars). (Dmitry) - Fixed bug #38278 (session_cache_expire()'s value does not match phpinfo's session.cache_expire). (Tony) - Fixed bug #38276 (file_exists() works incorrectly with long filenames diff --git a/Zend/tests/bug38287.phpt b/Zend/tests/bug38287.phpt new file mode 100755 index 0000000000..9a53a9335f --- /dev/null +++ b/Zend/tests/bug38287.phpt @@ -0,0 +1,45 @@ +--TEST-- +Bug #38287 (static variables mess up global vars) +--FILE-- +<?php +error_reporting(0); + +something::do_something(); + +// $not_there is really NULL +var_dump($not_there); + +// error occurs here: execution should never get inside the if condition because $not_there is NULL +if ($not_there["invalid_var"]) { + // will print NULL (which is ok, but execution should never get here if the value is NULL) + var_dump($not_there["use_authmodule"]); + // will print "PATH:Array" + print "PATH:".$not_there["use_authmodule"]."\n"; +} + +class something { + public static function get_object() { + static $object=NULL; + if ($object===NULL) + $object=new something; + return $object; + } + + public static function do_something() { + self::get_object()->vars[]=1; + self::get_object()->vars[]=2; + self::get_object()->vars[]=3; + var_dump(self::get_object()->vars); + } +} +?> +--EXPECT-- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +NULL diff --git a/Zend/zend.h b/Zend/zend.h index dfc26b958b..0ed6da1cbf 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -640,6 +640,11 @@ END_EXTERN_C() varptr->refcount++; \ } +#define READY_TO_DESTROY(zv) \ + ((zv)->refcount == 1 && \ + (Z_TYPE_P(zv) != IS_OBJECT || \ + zend_objects_store_get_refcount(zv TSRMLS_CC) == 1)) + #define ZEND_MAX_RESERVED_RESOURCES 4 diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c index 7ea9d14c68..d5845de612 100644 --- a/Zend/zend_objects_API.c +++ b/Zend/zend_objects_API.c @@ -125,6 +125,13 @@ ZEND_API zend_object_handle zend_objects_store_put(void *object, zend_objects_st return handle; } +ZEND_API zend_uint zend_objects_store_get_refcount(zval *object TSRMLS_DC) +{ + zend_object_handle handle = Z_OBJ_HANDLE_P(object); + + return EG(objects_store).object_buckets[handle].bucket.obj.refcount; +} + ZEND_API void zend_objects_store_add_ref(zval *object TSRMLS_DC) { zend_object_handle handle = Z_OBJ_HANDLE_P(object); diff --git a/Zend/zend_objects_API.h b/Zend/zend_objects_API.h index f465f2c46a..1bfe3353fc 100644 --- a/Zend/zend_objects_API.h +++ b/Zend/zend_objects_API.h @@ -66,6 +66,7 @@ ZEND_API void zend_objects_store_add_ref(zval *object TSRMLS_DC); ZEND_API void zend_objects_store_del_ref(zval *object TSRMLS_DC); ZEND_API void zend_objects_store_add_ref_by_handle(zend_object_handle handle TSRMLS_DC); ZEND_API void zend_objects_store_del_ref_by_handle(zend_object_handle handle TSRMLS_DC); +ZEND_API zend_uint zend_objects_store_get_refcount(zval *object TSRMLS_DC); ZEND_API zend_object_value zend_objects_store_clone_obj(zval *object TSRMLS_DC); ZEND_API void *zend_object_store_get_object(zval *object TSRMLS_DC); ZEND_API void *zend_object_store_get_object_by_handle(zend_object_handle handle TSRMLS_DC); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index cc5f64fc80..64c3084816 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1059,6 +1059,7 @@ ZEND_VM_HANDLER(84, ZEND_FETCH_DIM_W, VAR|CV, CONST|TMP|VAR|UNUSED|CV) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), GET_OP1_ZVAL_PTR_PTR(BP_VAR_W), dim, IS_OP2_TMP_FREE(), BP_VAR_W TSRMLS_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1075,6 +1076,7 @@ ZEND_VM_HANDLER(87, ZEND_FETCH_DIM_RW, VAR|CV, CONST|TMP|VAR|UNUSED|CV) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), GET_OP1_ZVAL_PTR_PTR(BP_VAR_RW), dim, IS_OP2_TMP_FREE(), BP_VAR_RW TSRMLS_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1108,6 +1110,7 @@ ZEND_VM_HANDLER(93, ZEND_FETCH_DIM_FUNC_ARG, VAR|CV, CONST|TMP|VAR|UNUSED|CV) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), GET_OP1_ZVAL_PTR_PTR(type), dim, IS_OP2_TMP_FREE(), type TSRMLS_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR && type == BP_VAR_W && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1135,6 +1138,7 @@ ZEND_VM_HANDLER(96, ZEND_FETCH_DIM_UNSET, VAR|CV, CONST|TMP|VAR|CV) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, IS_OP2_TMP_FREE(), BP_VAR_UNSET TSRMLS_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1240,6 +1244,7 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); } if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1263,6 +1268,7 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); } if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1294,6 +1300,7 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); } if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -1326,6 +1333,7 @@ ZEND_VM_HANDLER(97, ZEND_FETCH_OBJ_UNSET, VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); } if (OP1_TYPE == IS_VAR && OP1_FREE && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index bd6f90a431..ed5b13cc4c 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -8786,6 +8786,7 @@ static int ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -8802,6 +8803,7 @@ static int ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -8835,6 +8837,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, type TSRMLS_CC); if (IS_VAR == IS_VAR && type == BP_VAR_W && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -8862,6 +8865,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -8967,6 +8971,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -8990,6 +8995,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -9021,6 +9027,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -9053,6 +9060,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10258,6 +10266,7 @@ static int ZEND_FETCH_DIM_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 1, BP_VAR_W TSRMLS_CC); zval_dtor(free_op2.var); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10274,6 +10283,7 @@ static int ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 1, BP_VAR_RW TSRMLS_CC); zval_dtor(free_op2.var); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10307,6 +10317,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 1, type TSRMLS_CC); zval_dtor(free_op2.var); if (IS_VAR == IS_VAR && type == BP_VAR_W && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10334,6 +10345,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_UNSET TSRMLS_CC); zval_dtor(free_op2.var); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10439,6 +10451,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10462,6 +10475,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10493,6 +10507,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS zval_dtor(free_op2.var); } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -10525,6 +10540,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11733,6 +11749,7 @@ static int ZEND_FETCH_DIM_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11749,6 +11766,7 @@ static int ZEND_FETCH_DIM_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11782,6 +11800,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, type TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_VAR == IS_VAR && type == BP_VAR_W && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11809,6 +11828,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11914,6 +11934,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11937,6 +11958,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -11968,6 +11990,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -12000,6 +12023,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -12813,6 +12837,7 @@ static int ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -12829,6 +12854,7 @@ static int ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -12850,6 +12876,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_A zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, type TSRMLS_CC); if (IS_VAR == IS_VAR && type == BP_VAR_W && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13674,6 +13701,7 @@ static int ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13690,6 +13718,7 @@ static int ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13723,6 +13752,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), dim, 0, type TSRMLS_CC); if (IS_VAR == IS_VAR && type == BP_VAR_W && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13750,6 +13780,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC); if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13855,6 +13886,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13878,6 +13910,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13909,6 +13942,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -13941,6 +13975,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_VAR == IS_VAR && (free_op1.var != NULL) && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -15070,7 +15105,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = &opline->op2.u.constant; if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) { @@ -15088,6 +15123,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -15098,7 +15134,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = &opline->op2.u.constant; if (0) { @@ -15111,6 +15147,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -15129,7 +15166,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - + zend_free_op free_op1; zval *property = &opline->op2.u.constant; if (0) { @@ -15142,6 +15179,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -15155,7 +15193,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_res; + zend_free_op free_op1, free_res; zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); zval *property = &opline->op2.u.constant; @@ -15174,6 +15212,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -16179,7 +16218,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) { @@ -16197,6 +16236,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -16207,7 +16247,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (1) { @@ -16220,6 +16260,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -16238,7 +16279,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_A if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (1) { @@ -16251,6 +16292,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_A zval_dtor(free_op2.var); } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -16264,7 +16306,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_A static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2, free_res; + zend_free_op free_op1, free_op2, free_res; zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -16283,6 +16325,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS zval_dtor(free_op2.var); } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -17249,7 +17292,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) { @@ -17267,6 +17310,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -17277,7 +17321,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (0) { @@ -17290,6 +17334,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -17308,7 +17353,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_A if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (0) { @@ -17321,6 +17366,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_A if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -17334,7 +17380,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_A static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2, free_res; + zend_free_op free_op1, free_op2, free_res; zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -17353,6 +17399,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -18693,7 +18740,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_UNUSED != IS_CV) { @@ -18711,6 +18758,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -18721,7 +18769,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (0) { @@ -18734,6 +18782,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -18752,7 +18801,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_AR if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - + zend_free_op free_op1; zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (0) { @@ -18765,6 +18814,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_AR } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -18778,7 +18828,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_AR static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_res; + zend_free_op free_op1, free_res; zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C); zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -18797,6 +18847,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_UNUSED == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21149,12 +21200,13 @@ static int ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *dim = &opline->op2.u.constant; zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21165,12 +21217,13 @@ static int ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *dim = &opline->op2.u.constant; zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21193,7 +21246,7 @@ static int ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; int type = ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)?BP_VAR_W:BP_VAR_R; zval *dim; @@ -21204,6 +21257,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC), dim, 0, type TSRMLS_CC); if (IS_CV == IS_VAR && type == BP_VAR_W && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21214,7 +21268,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG static int ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); zval *dim = &opline->op2.u.constant; @@ -21231,6 +21285,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21317,7 +21372,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = &opline->op2.u.constant; if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) { @@ -21335,6 +21390,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21345,7 +21401,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = &opline->op2.u.constant; if (0) { @@ -21358,6 +21414,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21376,7 +21433,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - + zend_free_op free_op1; zval *property = &opline->op2.u.constant; if (0) { @@ -21389,6 +21446,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -21402,7 +21460,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_res; + zend_free_op free_op1, free_res; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); zval *property = &opline->op2.u.constant; @@ -21421,6 +21479,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22613,12 +22672,13 @@ static int ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC), dim, 1, BP_VAR_W TSRMLS_CC); zval_dtor(free_op2.var); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22629,12 +22689,13 @@ static int ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC), dim, 1, BP_VAR_RW TSRMLS_CC); zval_dtor(free_op2.var); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22657,7 +22718,7 @@ static int ZEND_FETCH_DIM_IS_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; int type = ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)?BP_VAR_W:BP_VAR_R; zval *dim; @@ -22668,6 +22729,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC), dim, 1, type TSRMLS_CC); zval_dtor(free_op2.var); if (IS_CV == IS_VAR && type == BP_VAR_W && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22678,7 +22740,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -22695,6 +22757,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_UNSET TSRMLS_CC); zval_dtor(free_op2.var); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22781,7 +22844,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) { @@ -22799,6 +22862,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22809,7 +22873,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (1) { @@ -22822,6 +22886,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22840,7 +22905,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (1) { @@ -22853,6 +22918,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -22866,7 +22932,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2, free_res; + zend_free_op free_op1, free_op2, free_res; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -22885,6 +22951,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24080,12 +24147,13 @@ static int ZEND_FETCH_DIM_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24096,12 +24164,13 @@ static int ZEND_FETCH_DIM_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24124,7 +24193,7 @@ static int ZEND_FETCH_DIM_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; int type = ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)?BP_VAR_W:BP_VAR_R; zval *dim; @@ -24135,6 +24204,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC), dim, 0, type TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_CV == IS_VAR && type == BP_VAR_W && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24145,7 +24215,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -24162,6 +24232,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC); if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24248,7 +24319,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) { @@ -24266,6 +24337,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24276,7 +24348,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (0) { @@ -24289,6 +24361,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24307,7 +24380,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - zend_free_op free_op2; + zend_free_op free_op1, free_op2; zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); if (0) { @@ -24320,6 +24393,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -24333,7 +24407,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op2, free_res; + zend_free_op free_op1, free_op2, free_res; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -24352,6 +24426,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -25151,12 +25226,13 @@ static int ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *dim = NULL; zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -25167,12 +25243,13 @@ static int ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *dim = NULL; zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -25183,7 +25260,7 @@ static int ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; int type = ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)?BP_VAR_W:BP_VAR_R; zval *dim; @@ -25194,6 +25271,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_AR zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC), dim, 0, type TSRMLS_CC); if (IS_CV == IS_VAR && type == BP_VAR_W && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26011,12 +26089,13 @@ static int ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC), dim, 0, BP_VAR_W TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26027,12 +26106,13 @@ static int ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC), dim, 0, BP_VAR_RW TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26055,7 +26135,7 @@ static int ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; int type = ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)?BP_VAR_W:BP_VAR_R; zval *dim; @@ -26066,6 +26146,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC), dim, 0, type TSRMLS_CC); if (IS_CV == IS_VAR && type == BP_VAR_W && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26076,7 +26157,7 @@ static int ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC); zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -26093,6 +26174,7 @@ static int ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_fetch_dimension_address(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC); if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26179,7 +26261,7 @@ static int ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (opline->extended_value == ZEND_FETCH_ADD_LOCK && IS_CV != IS_CV) { @@ -26197,6 +26279,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26207,7 +26290,7 @@ static int ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - + zend_free_op free_op1; zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (0) { @@ -26220,6 +26303,7 @@ static int ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26238,7 +26322,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) { /* Behave like FETCH_OBJ_W */ - + zend_free_op free_op1; zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); if (0) { @@ -26251,6 +26335,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } @@ -26264,7 +26349,7 @@ static int ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_res; + zend_free_op free_op1, free_res; zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -26283,6 +26368,7 @@ static int ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } if (IS_CV == IS_VAR && 0 && + READY_TO_DESTROY(free_op1.var) && !RETURN_VALUE_UNUSED(&opline->result)) { AI_USE_PTR(EX_T(opline->result.u.var).var); } |