@@ -839,11 +839,10 @@ ZEND_VM_C_LABEL(assign_dim_op_convert_to_array):
839
839
zend_check_string_offset (dim , BP_VAR_RW );
840
840
zend_wrong_string_offset ();
841
841
}
842
+ } else if (EXPECTED (Z_TYPE_P (container ) <= IS_FALSE )) {
843
+ ZEND_VM_C_GOTO (assign_dim_op_convert_to_array );
842
844
} else {
843
- if (EXPECTED (Z_TYPE_P (container ) <= IS_FALSE )) {
844
- ZEND_VM_C_GOTO (assign_dim_op_convert_to_array );
845
- }
846
- if (UNEXPECTED (OP1_TYPE != IS_VAR || !Z_ISERROR_P (container ))) {
845
+ if (UNEXPECTED (OP1_TYPE != IS_VAR || EXPECTED (!Z_ISERROR_P (container )))) {
847
846
zend_error (E_WARNING , "Cannot use a scalar value as an array" );
848
847
}
849
848
ZEND_VM_C_LABEL (assign_dim_op_ret_null ):
@@ -2159,13 +2158,6 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, SPEC(
2159
2158
2160
2159
if (OP1_TYPE != IS_UNUSED && UNEXPECTED (Z_TYPE_P (object ) != IS_OBJECT )) {
2161
2160
do {
2162
- if (OP1_TYPE == IS_VAR && UNEXPECTED (Z_ISERROR_P (object ))) {
2163
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
2164
- ZVAL_NULL (EX_VAR (opline -> result .var ));
2165
- }
2166
- FREE_OP_DATA ();
2167
- ZEND_VM_C_GOTO (exit_assign_obj );
2168
- }
2169
2161
if (Z_ISREF_P (object )) {
2170
2162
object = Z_REFVAL_P (object );
2171
2163
if (EXPECTED (Z_TYPE_P (object ) == IS_OBJECT )) {
@@ -2192,7 +2184,9 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, SPEC(
2192
2184
}
2193
2185
Z_DELREF_P (object );
2194
2186
} else {
2195
- zend_error (E_WARNING , "Attempt to assign property of non-object" );
2187
+ if (OP1_TYPE != IS_VAR || EXPECTED (!Z_ISERROR_P (object ))) {
2188
+ zend_error (E_WARNING , "Attempt to assign property of non-object" );
2189
+ }
2196
2190
if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
2197
2191
ZVAL_NULL (EX_VAR (opline -> result .var ));
2198
2192
}
@@ -2373,7 +2367,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array):
2373
2367
zend_hash_init (Z_ARRVAL_P (object_ptr ), 8 , NULL , ZVAL_PTR_DTOR , 0 );
2374
2368
ZEND_VM_C_GOTO (try_assign_dim_array );
2375
2369
} else {
2376
- if (OP1_TYPE != IS_VAR || UNEXPECTED (!Z_ISERROR_P (object_ptr ))) {
2370
+ if (OP1_TYPE != IS_VAR || EXPECTED (!Z_ISERROR_P (object_ptr ))) {
2377
2371
zend_error (E_WARNING , "Cannot use a scalar value as an array" );
2378
2372
}
2379
2373
dim = GET_OP2_ZVAL_PTR (BP_VAR_R );
0 commit comments