zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = opline->op1.zv;
- ZVAL_UNDEF(&tmp_varname);
- if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_CONST == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_CONST != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_CONST != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_CONST != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = opline->op1.zv;
- ZVAL_UNDEF(&tmp_varname);
- if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_CONST == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_VAR != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_CONST != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_CONST != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = opline->op1.zv;
- ZVAL_UNDEF(&tmp_varname);
- if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_CONST == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_UNUSED != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_CONST != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_CONST != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zend_free_op free_op1;
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_TMP_VAR == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_CONST != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_TMP_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
zval_dtor(free_op1.var);
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
zval_dtor(free_op1.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_TMP_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zend_free_op free_op1;
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_TMP_VAR == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_VAR != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_TMP_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
zval_dtor(free_op1.var);
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
zval_dtor(free_op1.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_TMP_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zend_free_op free_op1;
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_TMP_VAR == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_UNUSED != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_TMP_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
zval_dtor(free_op1.var);
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
zval_dtor(free_op1.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_TMP_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zend_free_op free_op1;
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_VAR == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_CONST != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
zval_ptr_dtor_nogc(free_op1.var);
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
zval_ptr_dtor_nogc(free_op1.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zend_free_op free_op1;
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_VAR == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_VAR != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
zval_ptr_dtor_nogc(free_op1.var);
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
zval_ptr_dtor_nogc(free_op1.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zend_free_op free_op1;
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_VAR == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_UNUSED != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
zval_ptr_dtor_nogc(free_op1.var);
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
zval_ptr_dtor_nogc(free_op1.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_VAR != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_CV == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_CONST != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_CV != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_CV != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_CV == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_VAR != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_CV != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_CV != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);
zval *varname;
zval *retval;
- zval tmp_varname;
+ zend_string *name;
HashTable *target_symbol_table;
SAVE_OPLINE();
varname = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- ZVAL_UNDEF(&tmp_varname);
- if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) {
- ZVAL_DUP_DEREF(&tmp_varname, varname);
- convert_to_string(&tmp_varname);
- varname = &tmp_varname;
+ if (IS_CV == IS_CONST) {
+ name = Z_STR_P(varname);
+ } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
+ name = Z_STR_P(varname);
+ STR_ADDREF(name);
+ } else {
+ name = zval_get_string(varname);
}
if (IS_UNUSED != IS_UNUSED) {
ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) {
if (IS_CV != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
CHECK_EXCEPTION();
} else {
ce = Z_CE_P(EX_VAR(opline->op2.var));
}
- retval = zend_std_get_static_property(ce, Z_STR_P(varname), 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(varname) : -1) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
- retval = zend_hash_find(target_symbol_table, Z_STR_P(varname));
+ retval = zend_hash_find(target_symbol_table, name);
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
- retval = zend_hash_add_new(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval));
+ retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
switch (type) {
case BP_VAR_R:
case BP_VAR_UNSET:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_IS:
retval = EX_VAR(opline->result.var);
ZVAL_NULL(retval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
+ zend_error(E_NOTICE,"Undefined variable: %s", name->val);
/* break missing intentionally */
case BP_VAR_W:
ZVAL_NULL(retval);
}
if (IS_CV != IS_CONST) {
- zval_dtor(&tmp_varname);
+ STR_RELEASE(name);
}
ZEND_ASSERT(retval != NULL);