]> granicus.if.org Git - php/commitdiff
Fixed memory leak
authorXinchen Hui <laruence@php.net>
Wed, 11 Mar 2015 02:33:43 +0000 (10:33 +0800)
committerXinchen Hui <laruence@php.net>
Wed, 11 Mar 2015 02:33:43 +0000 (10:33 +0800)
Zend/tests/call_static_005.phpt
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 7259857e55ec292dd3f7a0f5cd20b45225504ab8..273fc74a807117ad5ccffdf35a8199e6959bbb02 100644 (file)
@@ -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::()
index e64893886738bc1bbc335cbc0fc221666e760b6d..b6d7442dbaa47fbc3320d81b7f05769acbc59923 100644 (file)
@@ -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();
                }
index aa1cc1ae59917d0b07034d6339872982cf6efe3a..6180048915ebc7e8a70ac088d106c809e3c3c253 100644 (file)
@@ -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();
                }