From 75c0f63739ed336198154a35d91db536c0f242e2 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 11 Mar 2015 10:33:43 +0800 Subject: [PATCH] Fixed memory leak --- Zend/tests/call_static_005.phpt | 12 ++++++++---- Zend/zend_vm_def.h | 1 + Zend/zend_vm_execute.h | 3 +++ 3 files changed, 12 insertions(+), 4 deletions(-) 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(); } -- 2.40.0