From 9bd98624510d8e6b97983cb019fcbc14ba8b5eae Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Sun, 15 Jul 2001 17:48:50 +0000 Subject: [PATCH] Fix bug #10257 --- Zend/zend_execute_API.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index f59d51794da..67e2b0f12b6 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -344,6 +344,7 @@ int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *fun int orig_free_op1, orig_free_op2; int (*orig_unary_op)(zval *result, zval *op1); int (*orig_binary_op)(zval *result, zval *op1, zval *op2); + zval function_name_copy; ELS_FETCH(); *retval_ptr_ptr = NULL; @@ -391,11 +392,16 @@ int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *fun return FAILURE; } + function_name_copy = *function_name; + zval_copy_ctor(&function_name_copy); + zend_str_tolower(function_name_copy.value.str.val, function_name_copy.value.str.len); + original_function_state_ptr = EG(function_state_ptr); - zend_str_tolower(function_name->value.str.val, function_name->value.str.len); - if (zend_hash_find(function_table, function_name->value.str.val, function_name->value.str.len+1, (void **) &function_state.function)==FAILURE) { + if (zend_hash_find(function_table, function_name_copy.value.str.val, function_name_copy.value.str.len+1, (void **) &function_state.function)==FAILURE) { + zval_dtor(&function_name_copy); return FAILURE; } + zval_dtor(&function_name_copy); for (i=0; i