@@ -2457,8 +2457,8 @@ ZEND_VM_HANDLER(24, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CACHE_
2457
2457
}
2458
2458
object = make_real_object (object , property OPLINE_CC EXECUTE_DATA_CC );
2459
2459
if (UNEXPECTED (!object )) {
2460
- FREE_OP_DATA ( );
2461
- ZEND_VM_C_GOTO (exit_assign_obj );
2460
+ value = & EG ( uninitialized_zval );
2461
+ ZEND_VM_C_GOTO (free_and_exit_assign_obj );
2462
2462
}
2463
2463
}
2464
2464
@@ -2488,15 +2488,12 @@ ZEND_VM_C_LABEL(assign_object):
2488
2488
if (OP_DATA_TYPE == IS_CONST && Z_TYPE_P (value ) == orig_type ) {
2489
2489
CACHE_PTR_EX (cache_slot + 2 , NULL );
2490
2490
}
2491
- FREE_OP_DATA ( );
2491
+ ZEND_VM_C_GOTO ( free_and_exit_assign_obj );
2492
2492
} else {
2493
2493
ZEND_VM_C_LABEL (fast_assign_obj ):
2494
2494
value = zend_assign_to_variable (property_val , value , OP_DATA_TYPE , EX_USES_STRICT_TYPES ());
2495
+ ZEND_VM_C_GOTO (exit_assign_obj );
2495
2496
}
2496
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
2497
- ZVAL_COPY (EX_VAR (opline -> result .var ), value );
2498
- }
2499
- ZEND_VM_C_GOTO (exit_assign_obj );
2500
2497
}
2501
2498
} else {
2502
2499
if (EXPECTED (zobj -> properties != NULL )) {
@@ -2542,9 +2539,6 @@ ZEND_VM_C_LABEL(fast_assign_obj):
2542
2539
}
2543
2540
}
2544
2541
zend_hash_add_new (zobj -> properties , Z_STR_P (property ), value );
2545
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
2546
- ZVAL_COPY (EX_VAR (opline -> result .var ), value );
2547
- }
2548
2542
ZEND_VM_C_GOTO (exit_assign_obj );
2549
2543
}
2550
2544
}
@@ -2554,13 +2548,14 @@ ZEND_VM_C_LABEL(fast_assign_obj):
2554
2548
ZVAL_DEREF (value );
2555
2549
}
2556
2550
2557
- property = Z_OBJ_HT_P (object )-> write_property (object , property , value , (OP2_TYPE == IS_CONST ) ? CACHE_ADDR (opline -> extended_value ) : NULL );
2551
+ value = Z_OBJ_HT_P (object )-> write_property (object , property , value , (OP2_TYPE == IS_CONST ) ? CACHE_ADDR (opline -> extended_value ) : NULL );
2558
2552
2559
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
2560
- ZVAL_COPY (EX_VAR (opline -> result .var ), property );
2561
- }
2553
+ ZEND_VM_C_LABEL (free_and_exit_assign_obj ):
2562
2554
FREE_OP_DATA ();
2563
2555
ZEND_VM_C_LABEL (exit_assign_obj ):
2556
+ if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
2557
+ ZVAL_COPY (EX_VAR (opline -> result .var ), value );
2558
+ }
2564
2559
FREE_OP2 ();
2565
2560
FREE_OP1_VAR_PTR ();
2566
2561
/* assign_obj has two opcodes! */
0 commit comments