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;
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<param_count; i++) {
zval *param;