From: Dmitry Stogov Date: Mon, 25 Apr 2016 11:15:06 +0000 (+0300) Subject: Merge branch 'PHP-7.0' X-Git-Tag: php-7.1.0alpha1~270 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=11e06e91eccad2b8bceb03dc9a56395a192c7019;p=php Merge branch 'PHP-7.0' * PHP-7.0: Fixed bug #72101 (crash on complex code) --- 11e06e91eccad2b8bceb03dc9a56395a192c7019 diff --cc Zend/zend_vm_def.h index 99494cff2a,5471356f5c..e1a87bbc9e --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@@ -4555,8 -4589,9 +4555,8 @@@ ZEND_VM_HANDLER(119, ZEND_SEND_ARRAY, A OBJ_RELEASE(Z_OBJ(EX(call)->This)); } EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); } else { uint32_t arg_num; HashTable *ht; @@@ -4586,9 -4621,9 +4586,8 @@@ ZEND_VM_C_LABEL(send_array) OBJ_RELEASE(Z_OBJ(EX(call)->This)); } EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); break; } } @@@ -4637,8 -4672,9 +4636,8 @@@ ZEND_VM_HANDLER(120, ZEND_SEND_USER, VA } ZVAL_UNDEF(param); EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); FREE_OP1(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); diff --cc Zend/zend_vm_execute.h index 4aa47ba299,ba50ccd844..bbf9213ab0 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@@ -1431,8 -1121,9 +1431,8 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS OBJ_RELEASE(Z_OBJ(EX(call)->This)); } EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); } else { uint32_t arg_num; HashTable *ht; @@@ -1462,9 -1153,9 +1462,8 @@@ send_array OBJ_RELEASE(Z_OBJ(EX(call)->This)); } EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); break; } } @@@ -15652,8 -15348,9 +15651,8 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } ZVAL_UNDEF(param); EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); zval_ptr_dtor_nogc(free_op1); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@@ -35254,8 -28956,9 +35253,8 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } ZVAL_UNDEF(param); EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call))); - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); }