diff options
-rw-r--r-- | Zend/zend_object_handlers.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 251ac310d5..c77754fe46 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -1044,7 +1044,9 @@ static union _zend_function *zend_std_get_method(zend_object **obj_ptr, zend_str } if (UNEXPECTED((func = zend_hash_find(&zobj->ce->function_table, lc_method_name)) == NULL)) { - STR_ALLOCA_FREE(lc_method_name, use_heap); + if (UNEXPECTED(!key)) { + STR_ALLOCA_FREE(lc_method_name, use_heap); + } if (zobj->ce->__call) { return zend_get_user_call_function(zobj->ce, method_name); } else { @@ -1099,7 +1101,9 @@ static union _zend_function *zend_std_get_method(zend_object **obj_ptr, zend_str } } - STR_ALLOCA_FREE(lc_method_name, use_heap); + if (UNEXPECTED(!key)) { + STR_ALLOCA_FREE(lc_method_name, use_heap); + } return fbc; } /* }}} */ |