From: Xinchen Hui Date: Wed, 11 Mar 2015 02:33:43 +0000 (+0800) Subject: Fixed memory leak X-Git-Tag: PRE_PHP7_NSAPI_REMOVAL~708 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=75c0f63739ed336198154a35d91db536c0f242e2;p=php Fixed memory leak --- diff --git a/Zend/tests/call_static_005.phpt b/Zend/tests/call_static_005.phpt index 7259857e55..273fc74a80 100644 --- a/Zend/tests/call_static_005.phpt +++ b/Zend/tests/call_static_005.phpt @@ -9,9 +9,13 @@ class foo { } } -$a = 'foo::'; -$a(); +try { + $a = 'foo::'; + $a(); +} catch (EngineException $e) { + echo $e->getMessage(); +} ?> ---EXPECTF-- -Fatal error: Call to undefined function foo::() in %s on line %d +--EXPECT-- +Call to undefined function foo::() diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index e648938867..b6d7442dba 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2683,6 +2683,7 @@ ZEND_VM_C_LABEL(try_function_name): } if (UNEXPECTED((func = zend_hash_find(EG(function_table), lcname)) == NULL)) { zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name)); + zend_string_release(lcname); FREE_OP2(); HANDLE_EXCEPTION(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index aa1cc1ae59..6180048915 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -1809,6 +1809,7 @@ try_function_name: } if (UNEXPECTED((func = zend_hash_find(EG(function_table), lcname)) == NULL)) { zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name)); + zend_string_release(lcname); HANDLE_EXCEPTION(); } @@ -2196,6 +2197,7 @@ try_function_name: } if (UNEXPECTED((func = zend_hash_find(EG(function_table), lcname)) == NULL)) { zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name)); + zend_string_release(lcname); HANDLE_EXCEPTION(); } @@ -2379,6 +2381,7 @@ try_function_name: } if (UNEXPECTED((func = zend_hash_find(EG(function_table), lcname)) == NULL)) { zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name)); + zend_string_release(lcname); zval_ptr_dtor_nogc(free_op2); HANDLE_EXCEPTION(); }