com php-src: Fixed bug #69700 (tests/lang/this_assignment .phpt memory errors): Zend/zend_vm_def.h Ze nd/zend_vm_execute.h

From: Date: Mon, 25 May 2015 15:29:31 +0000
Subject: com php-src: Fixed bug #69700 (tests/lang/this_assignment .phpt memory errors): Zend/zend_vm_def.h Ze nd/zend_vm_execute.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-86905@lists.php.net to get a copy of this message
Commit: c436e25fd5519bb26fea2385d858823be7e3fca2 Author: Dmitry Stogov <dmitry@zend.com> Mon, 25 May 2015 18:29:31 +0300 Parents: 404360f261ef56b478228caf8f5371ddbe6feaf2 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c436e25fd5519bb26fea2385d858823be7e3fca2 Log: Fixed bug #69700 (tests/lang/this_assignment.phpt memory errors) Bugs: https://bugs.php.net/69700 Changed paths: M Zend/zend_vm_def.h M Zend/zend_vm_execute.h Diff: diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index d3ca968..76d1f54 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2986,7 +2986,8 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, CONST|TMPVAR|UNUSED|CV, CONST|TMPVAR call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (OP1_TYPE & (IS_VAR|IS_TMP_VAR)) { + } else if (OP1_TYPE & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index c174ff4..4680c72 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -5647,7 +5647,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CO call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_CONST & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g.. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -9284,7 +9285,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CV call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_CONST & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -11009,7 +11011,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_TM call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_CONST & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -23937,7 +23940,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_C call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -26350,7 +26354,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_C call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -27885,7 +27890,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_T call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -32184,7 +32190,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_CV & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -37265,7 +37272,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HA call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_CV & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -39845,7 +39853,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVA call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if (IS_CV & (IS_VAR|IS_TMP_VAR)) { + } else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -41997,7 +42006,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_C call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) { + } else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -44066,7 +44076,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_C call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) { + } else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e.g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ } @@ -45123,7 +45134,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_T call_info = ZEND_CALL_NESTED_FUNCTION; if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) { obj = NULL; - } else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) { + } else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) { + /* CV may be changed inderectly (e..g. when it's a reference) */ call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS; GC_REFCOUNT(obj)++; /* For $this pointer */ }

« previous php.cvs (#86905) next »