Fixed test tests/classes/__call_007.php

This commit is contained in:
Xinchen Hui 2014-02-21 21:39:02 +08:00
parent 882b0a3c24
commit 92450f9d6c
3 changed files with 327 additions and 262 deletions

View File

@ -3149,7 +3149,7 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval *object_ptr, uint ch
} }
} else { } else {
if (!!EG(objects_store).object_buckets || if (!EG(objects_store).object_buckets ||
!IS_VALID(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(obj)])) { !IS_VALID(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(obj)])) {
return 0; return 0;
} }

View File

@ -1025,7 +1025,9 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, UNUSED|CONST|
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -1060,30 +1062,33 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, UNUSED|CONST|
if (OP1_TYPE != IS_CONST && varname == &tmp_varname) { if (OP1_TYPE != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
} //??? FREE_OP_VAR_PTR(free_res);
/* break missing intentionally */ }
default: /* break missing intentionally */
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval); default:
break; ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
}
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();

View File

@ -3544,7 +3544,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -3579,30 +3581,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type
if (IS_CONST != IS_CONST && varname == &tmp_varname) { if (IS_CONST != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -5296,7 +5301,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type,
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -5331,30 +5338,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type,
if (IS_CONST != IS_CONST && varname == &tmp_varname) { if (IS_CONST != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -5979,7 +5989,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -6014,30 +6026,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ
if (IS_CONST != IS_CONST && varname == &tmp_varname) { if (IS_CONST != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -8574,7 +8589,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_CONST(int type,
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -8609,30 +8626,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_CONST(int type,
if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) { if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -10207,7 +10227,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_VAR(int type, ZE
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -10242,30 +10264,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_VAR(int type, ZE
if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) { if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -10898,7 +10923,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type,
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -10933,30 +10960,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type,
if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) { if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -14130,7 +14160,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_CONST(int type,
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -14165,30 +14197,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_CONST(int type,
if (IS_VAR != IS_CONST && varname == &tmp_varname) { if (IS_VAR != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -18473,7 +18508,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_VAR(int type, ZE
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -18508,30 +18545,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_VAR(int type, ZE
if (IS_VAR != IS_CONST && varname == &tmp_varname) { if (IS_VAR != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -20340,7 +20380,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_UNUSED(int type,
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -20375,30 +20417,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_UNUSED(int type,
if (IS_VAR != IS_CONST && varname == &tmp_varname) { if (IS_VAR != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -30637,7 +30682,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -30672,30 +30719,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z
if (IS_CV != IS_CONST && varname == &tmp_varname) { if (IS_CV != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -34635,7 +34685,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -34670,30 +34722,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN
if (IS_CV != IS_CONST && varname == &tmp_varname) { if (IS_CV != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
@ -36376,7 +36431,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type,
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
/* break missing intentionally */ /* break missing intentionally */
case BP_VAR_IS: case BP_VAR_IS:
ZVAL_NULL(retval); //???
//ZVAL_NULL(retval);
ZVAL_NULL(EX_VAR(opline->result.var));
break; break;
case BP_VAR_RW: case BP_VAR_RW:
zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
@ -36411,30 +36468,33 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type,
if (IS_CV != IS_CONST && varname == &tmp_varname) { if (IS_CV != IS_CONST && varname == &tmp_varname) {
zval_dtor(&tmp_varname); zval_dtor(&tmp_varname);
} }
if (opline->extended_value & ZEND_FETCH_MAKE_REF) { if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
} }
if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval); if (EXPECTED(retval)) {
switch (type) { if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
case BP_VAR_R: switch (type) {
case BP_VAR_IS: case BP_VAR_R:
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval); case BP_VAR_IS:
break; ZVAL_COPY_VALUE(EX_VAR(opline->result.var), retval);
case BP_VAR_UNSET: { break;
//??? zend_free_op free_res; case BP_VAR_UNSET: {
//??? //??? zend_free_op free_res;
//??? PZVAL_UNLOCK(*retval, &free_res); //???
//??? if (retval != &EG(uninitialized_zval_ptr)) { //??? PZVAL_UNLOCK(*retval, &free_res);
//??? SEPARATE_ZVAL_IF_NOT_REF(retval); //??? if (retval != &EG(uninitialized_zval_ptr)) {
//??? } //??? SEPARATE_ZVAL_IF_NOT_REF(retval);
//??? PZVAL_LOCK(*retval); //??? }
//??? FREE_OP_VAR_PTR(free_res); //??? PZVAL_LOCK(*retval);
//??? FREE_OP_VAR_PTR(free_res);
}
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
/* break missing intentionally */
default:
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
break;
} }
CHECK_EXCEPTION(); CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();