diff options
Diffstat (limited to 'Zend/zend_execute_API.c')
| -rw-r--r-- | Zend/zend_execute_API.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 34b576860f..3d04fe7747 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -540,9 +540,9 @@ int fast_call_user_function(HashTable *function_table, zval **object_pp, zval *f zval *orig_free_op1, *orig_free_op2; int (*orig_unary_op)(zval *result, zval *op1); int (*orig_binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC); - zval function_name_copy; zend_class_entry *current_scope; zend_class_entry *calling_scope = NULL; + char *function_name_lc; zval *current_this; zend_namespace *current_namespace = EG(active_namespace); zend_execute_data execute_data; @@ -595,8 +595,7 @@ int fast_call_user_function(HashTable *function_table, zval **object_pp, zval *f char *lc_class; int found; - lc_class = estrndup(Z_STRVAL_PP(object_pp), Z_STRLEN_PP(object_pp)); - zend_str_tolower(lc_class, Z_STRLEN_PP(object_pp)); + lc_class = zend_str_tolower_copy(Z_STRVAL_PP(object_pp), Z_STRLEN_PP(object_pp)); found = zend_lookup_class(lc_class, Z_STRLEN_PP(object_pp), &ce TSRMLS_CC); efree(lc_class); if (found == FAILURE) @@ -613,16 +612,14 @@ int fast_call_user_function(HashTable *function_table, zval **object_pp, zval *f 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); + function_name_lc = zend_str_tolower_copy(function_name->value.str.val, function_name->value.str.len); original_function_state_ptr = EG(function_state_ptr); - if (zend_hash_find(function_table, function_name_copy.value.str.val, function_name_copy.value.str.len+1, (void **) &EX(function_state).function)==FAILURE) { - zval_dtor(&function_name_copy); + if (zend_hash_find(function_table, function_name_lc, function_name->value.str.len+1, (void **) &EX(function_state).function)==FAILURE) { + efree(function_name_lc); return FAILURE; } - zval_dtor(&function_name_copy); + efree(function_name_lc); *function_pointer = EX(function_state).function; } else { EX(function_state).function = *function_pointer; |
