File tree 2 files changed +23
-1
lines changed
2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -2102,7 +2102,6 @@ static uint32_t assign_dim_result_type(
2102
2102
tmp |= MAY_BE_RC1 | MAY_BE_RCN ;
2103
2103
}
2104
2104
if (tmp & MAY_BE_ARRAY ) {
2105
- tmp |= (value_type & MAY_BE_ANY ) << MAY_BE_ARRAY_SHIFT ;
2106
2105
if (value_type & MAY_BE_UNDEF ) {
2107
2106
tmp |= MAY_BE_ARRAY_OF_NULL ;
2108
2107
}
@@ -2123,6 +2122,11 @@ static uint32_t assign_dim_result_type(
2123
2122
tmp |= MAY_BE_ARRAY_KEY_STRING ;
2124
2123
}
2125
2124
}
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
+ }
2126
2130
}
2127
2131
return tmp ;
2128
2132
}
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