summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r--Zend/zend_execute_API.c15
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;