char *class_name_strval = NULL;
zend_uint class_name_strlen = 0;
zval *class_name;
- zval tmp;
if (EX(opline)->op2.op_type == IS_UNUSED) {
if (EX(opline)->extended_value == ZEND_FETCH_CLASS_SELF) {
if (class_name->type == IS_OBJECT) {
ce = Z_OBJCE_P(class_name);
} else {
- tmp = *class_name;
- zval_copy_ctor(&tmp);
- convert_to_string(&tmp);
- zend_str_tolower(tmp.value.str.val, tmp.value.str.len);
-
- class_name_strval = tmp.value.str.val;
- class_name_strlen = tmp.value.str.len;
+ class_name_strval = zend_str_tolower_copy(class_name->value.str.val, class_name->value.str.len);
+ class_name_strlen = class_name->value.str.len;
}
}
EX_T(EX(opline)->result.u.var).EA.class_entry = ce;
}
if (!is_const) {
- zval_dtor(&tmp);
+ efree(class_name_strval);
FREE_OP(EX(Ts), &EX(opline)->op2, EG(free_op2));
}
NEXT_OPCODE();
int zend_init_static_method_call_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zval *function_name;
- zval tmp;
zend_class_entry *ce;
zend_bool is_const;
char *function_name_strval;
} else {
function_name = get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R);
- tmp = *function_name;
- zval_copy_ctor(&tmp);
- convert_to_string(&tmp);
- zend_str_tolower(tmp.value.str.val, tmp.value.str.len);
-
- function_name_strval = tmp.value.str.val;
- function_name_strlen = tmp.value.str.len;
+ function_name_strval = zend_str_tolower_copy(function_name->value.str.val, function_name->value.str.len);
+ function_name_strlen = function_name->value.str.len;
}
if (EX(opline)->op1.op_type == IS_UNUSED) {
EX(calling_scope) = EX(fbc)->common.scope;
if (!is_const) {
- zval_dtor(&tmp);
+ efree(function_name_strval);
FREE_OP(EX(Ts), &EX(opline)->op2, EG(free_op2));
}
{
zval *function_name;
zend_function *function;
- zval tmp;
zend_bool is_const;
char *function_name_strval;
int function_name_strlen;
} else {
function_name = get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R);
- tmp = *function_name;
- zval_copy_ctor(&tmp);
- convert_to_string(&tmp);
- zend_str_tolower(tmp.value.str.val, tmp.value.str.len);
-
- function_name_strval = tmp.value.str.val;
- function_name_strlen = tmp.value.str.len;
+ function_name_strval = zend_str_tolower_copy(function_name->value.str.val, function_name->value.str.len);
+ function_name_strlen = function_name->value.str.len;
}
} while (0);
if (!is_const) {
- zval_dtor(&tmp);
+ efree(function_name_strval);
FREE_OP(EX(Ts), &EX(opline)->op2, EG(free_op2));
}
EX(fbc) = function;