zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- FREE_OP(free_op_data1);
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
/* assign_obj has two opcodes! */
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- ZVAL_NULL(retval);
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- FREE_OP(free_op_data1);
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
/* assign_obj has two opcodes! */
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- ZVAL_NULL(retval);
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
+
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- zval_ptr_dtor_nogc(free_op2);
- FREE_OP(free_op_data1);
- }
+ } while (0);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
/* assign_obj has two opcodes! */
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
zval_ptr_dtor_nogc(free_op2);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_VAR != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- ZVAL_NULL(retval);
- if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
+
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
zval_ptr_dtor_nogc(free_op2);
if (free_op1) {zval_ptr_dtor_nogc(free_op1);};
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- FREE_OP(free_op_data1);
- }
+ } while (0);
/* assign_obj has two opcodes! */
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- ZVAL_NULL(retval);
-
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- FREE_OP(free_op_data1);
- }
+ } while (0);
/* assign_obj has two opcodes! */
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- ZVAL_NULL(retval);
-
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
+
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- zval_ptr_dtor_nogc(free_op2);
- FREE_OP(free_op_data1);
- }
+ } while (0);
/* assign_obj has two opcodes! */
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
zval_ptr_dtor_nogc(free_op2);
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_UNUSED != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- ZVAL_NULL(retval);
-
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
zval_ptr_dtor_nogc(free_op2);
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- FREE_OP(free_op_data1);
- }
+ } while (0);
/* assign_obj has two opcodes! */
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- ZVAL_NULL(retval);
-
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
+
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- FREE_OP(free_op_data1);
- }
+ } while (0);
/* assign_obj has two opcodes! */
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-
- ZVAL_NULL(retval);
-
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC);
- }
-
- value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to assign property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ }
+ break;
+ }
+ }
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to assign property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- FREE_OP(free_op_data1);
+ value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(EX_VAR(opline->result.var));
- }
- } else {
/* here we are sure we are dealing with an object */
if (opline->extended_value == ZEND_ASSIGN_OBJ
&& EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
}
}
}
-
- zval_ptr_dtor_nogc(free_op2);
- FREE_OP(free_op_data1);
- }
+ } while (0);
/* assign_obj has two opcodes! */
CHECK_EXCEPTION();
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
+ }
+ break;
+ }
}
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ /* here we are sure we are dealing with an object */
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
- incdec_op(zptr);
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_COPY(retval, zptr);
- }
- } else {
- zval rv;
+ incdec_op(zptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY(retval, zptr);
+ }
+ } else {
+ zval rv;
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
- zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
+ }
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ SEPARATE_ZVAL_IF_NOT_REF(z);
+ incdec_op(z);
+ ZVAL_COPY_VALUE(retval, z);
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(retval, opline);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_NULL(retval);
}
- ZVAL_COPY_VALUE(z, value);
- }
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- SEPARATE_ZVAL_IF_NOT_REF(z);
- incdec_op(z);
- ZVAL_COPY_VALUE(retval, z);
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(retval, opline);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- if (RETURN_VALUE_USED(opline)) {
- ZVAL_NULL(retval);
}
}
- }
+ } while (0);
zval_ptr_dtor_nogc(free_op2);
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
- if (IS_CV != IS_UNUSED) {
- object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
- }
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- zval_ptr_dtor_nogc(free_op2);
- ZVAL_NULL(retval);
-
- CHECK_EXCEPTION();
- ZEND_VM_NEXT_OPCODE();
- }
-
- /* here we are sure we are dealing with an object */
+ do {
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ object = make_real_object(object TSRMLS_CC); /* this should modify object only if it's empty */
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
+ break;
+ }
+ }
- if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
+ /* here we are sure we are dealing with an object */
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(retval, zptr);
- zval_opt_copy_ctor(zptr);
+ if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
- incdec_op(zptr);
- } else {
- if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
- zval rv;
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
- zval z_copy;
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ incdec_op(zptr);
+ } else {
+ if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
zval rv;
- zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC);
+ zval z_copy;
+
+ if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) {
+ zval rv;
+ zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC);
- if (Z_REFCOUNT_P(z) == 0) {
- zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ if (Z_REFCOUNT_P(z) == 0) {
+ zend_objects_store_del(Z_OBJ_P(z) TSRMLS_CC);
+ }
+ ZVAL_COPY_VALUE(z, value);
}
- ZVAL_COPY_VALUE(z, value);
+ ZVAL_DUP(retval, z);
+ ZVAL_DUP(&z_copy, z);
+ incdec_op(&z_copy);
+ if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
+ zval_ptr_dtor(&z_copy);
+ zval_ptr_dtor(z);
+ } else {
+ zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
+ ZVAL_NULL(retval);
}
- ZVAL_DUP(retval, z);
- ZVAL_DUP(&z_copy, z);
- incdec_op(&z_copy);
- if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z);
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC);
- zval_ptr_dtor(&z_copy);
- zval_ptr_dtor(z);
- } else {
- zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
- ZVAL_NULL(retval);
}
- }
+ } while (0);
zval_ptr_dtor_nogc(free_op2);