File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2102,7 +2102,6 @@ static uint32_t assign_dim_result_type(
21022102 tmp |= MAY_BE_RC1 | MAY_BE_RCN ;
21032103 }
21042104 if (tmp & MAY_BE_ARRAY ) {
2105- tmp |= (value_type & MAY_BE_ANY ) << MAY_BE_ARRAY_SHIFT ;
21062105 if (value_type & MAY_BE_UNDEF ) {
21072106 tmp |= MAY_BE_ARRAY_OF_NULL ;
21082107 }
@@ -2123,6 +2122,11 @@ static uint32_t assign_dim_result_type(
21232122 tmp |= MAY_BE_ARRAY_KEY_STRING ;
21242123 }
21252124 }
2125+ /* Only add value type if we have a key type. It might be that the key type is illegal
2126+ * for arrays. */
2127+ if (tmp & MAY_BE_ARRAY_KEY_ANY ) {
2128+ tmp |= (value_type & MAY_BE_ANY ) << MAY_BE_ARRAY_SHIFT ;
2129+ }
21262130 }
21272131 return tmp ;
21282132}
Original file line number Diff line number Diff line change 1+ --TEST--
2+ Don't add array value type is key type is illegal
3+ --FILE--
4+ <?php
5+
6+ function test (\SplObjectStorage $ definitions = null ) {
7+ $ argument = new stdClass ;
8+ $ definitions [$ argument ] = 1 ;
9+ $ definitions [$ argument ] += 1 ;
10+ $ argument = [];
11+ $ definitions [$ argument ] = 1 ;
12+ $ definitions [$ argument ] += 1 ;
13+ }
14+
15+ ?>
16+ ===DONE===
17+ --EXPECT--
18+ ===DONE===
You can’t perform that action at this time.
0 commit comments