@@ -3257,20 +3257,30 @@ static zend_always_inline zend_result _zend_update_type_info(
3257
3257
key_type |= MAY_BE_ARRAY_PACKED ;
3258
3258
}
3259
3259
if (t1 & MAY_BE_ARRAY ) {
3260
- key_type |= ( MAY_BE_HASH_ONLY (t1 ) || ( t1 & ( MAY_BE_UNDEF | MAY_BE_NULL | MAY_BE_FALSE )) ) ?
3260
+ key_type |= MAY_BE_HASH_ONLY (t1 ) ?
3261
3261
MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG ;
3262
3262
}
3263
3263
} else {
3264
3264
if (t2 & (MAY_BE_LONG |MAY_BE_FALSE |MAY_BE_TRUE |MAY_BE_RESOURCE |MAY_BE_DOUBLE )) {
3265
- key_type |= (MAY_BE_HASH_ONLY (t1 ) || (t1 & (MAY_BE_UNDEF |MAY_BE_NULL |MAY_BE_FALSE ))) ?
3266
- MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG ;
3265
+ if (t1 & (MAY_BE_UNDEF |MAY_BE_NULL |MAY_BE_FALSE )) {
3266
+ key_type |= MAY_BE_ARRAY_PACKED ;
3267
+ }
3268
+ if (t1 & MAY_BE_ARRAY ) {
3269
+ key_type |= MAY_BE_HASH_ONLY (t1 ) ?
3270
+ MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG ;
3271
+ }
3267
3272
}
3268
3273
if (t2 & MAY_BE_STRING ) {
3269
3274
key_type |= MAY_BE_ARRAY_KEY_STRING ;
3270
3275
if (opline -> op2_type != IS_CONST ) {
3271
3276
// FIXME: numeric string
3272
- key_type |= (MAY_BE_HASH_ONLY (t1 ) || (t1 & (MAY_BE_UNDEF |MAY_BE_NULL |MAY_BE_FALSE ))) ?
3273
- MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG ;
3277
+ if (t1 & (MAY_BE_UNDEF |MAY_BE_NULL |MAY_BE_FALSE )) {
3278
+ key_type |= MAY_BE_ARRAY_PACKED ;
3279
+ }
3280
+ if (t1 & MAY_BE_ARRAY ) {
3281
+ key_type |= MAY_BE_HASH_ONLY (t1 ) ?
3282
+ MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG ;
3283
+ }
3274
3284
}
3275
3285
}
3276
3286
if (t2 & (MAY_BE_UNDEF | MAY_BE_NULL )) {
0 commit comments