@@ -1515,9 +1515,13 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|V
1515
1515
1516
1516
/* check if static properties were destoyed */
1517
1517
if (UNEXPECTED (CE_STATIC_MEMBERS (ce ) == NULL )) {
1518
- zend_throw_error (NULL , "Access to undeclared static property: %s::$%s" , ZSTR_VAL (ce -> name ), ZSTR_VAL (name ));
1519
- FREE_OP1 ();
1520
- HANDLE_EXCEPTION ();
1518
+ if (type == BP_VAR_IS ) {
1519
+ retval = & EG (uninitialized_zval );
1520
+ } else {
1521
+ zend_throw_error (NULL , "Access to undeclared static property: %s::$%s" , ZSTR_VAL (ce -> name ), ZSTR_VAL (name ));
1522
+ FREE_OP1 ();
1523
+ HANDLE_EXCEPTION ();
1524
+ }
1521
1525
}
1522
1526
1523
1527
ZEND_VM_C_GOTO (fetch_var_return );
@@ -1539,24 +1543,32 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|V
1539
1543
1540
1544
/* check if static properties were destoyed */
1541
1545
if (UNEXPECTED (CE_STATIC_MEMBERS (ce ) == NULL )) {
1542
- zend_throw_error (NULL , "Access to undeclared static property: %s::$%s" , ZSTR_VAL (ce -> name ), ZSTR_VAL (name ));
1543
- FREE_OP1 ();
1544
- HANDLE_EXCEPTION ();
1546
+ if (type == BP_VAR_IS ) {
1547
+ retval = & EG (uninitialized_zval );
1548
+ } else {
1549
+ zend_throw_error (NULL , "Access to undeclared static property: %s::$%s" , ZSTR_VAL (ce -> name ), ZSTR_VAL (name ));
1550
+ FREE_OP1 ();
1551
+ HANDLE_EXCEPTION ();
1552
+ }
1545
1553
}
1546
1554
1547
1555
ZEND_VM_C_GOTO (fetch_var_return );
1548
1556
}
1549
1557
}
1550
- retval = zend_std_get_static_property (ce , name , 0 );
1558
+ retval = zend_std_get_static_property (ce , name , type == BP_VAR_IS );
1551
1559
if (UNEXPECTED (EG (exception ))) {
1552
1560
if (OP1_TYPE != IS_CONST ) {
1553
1561
zend_string_release (name );
1554
1562
}
1555
1563
FREE_OP1 ();
1556
1564
HANDLE_EXCEPTION ();
1557
1565
}
1558
- if (OP1_TYPE == IS_CONST && retval ) {
1559
- CACHE_POLYMORPHIC_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )), ce , retval );
1566
+ if (retval ) {
1567
+ if (OP1_TYPE == IS_CONST ) {
1568
+ CACHE_POLYMORPHIC_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )), ce , retval );
1569
+ }
1570
+ } else {
1571
+ retval = & EG (uninitialized_zval );
1560
1572
}
1561
1573
1562
1574
FREE_OP1 ();
0 commit comments