@@ -3100,14 +3100,10 @@ static void php_splice(HashTable *in_hash, zend_long offset, zend_long length, H
3100
3100
p = in_hash -> arData + idx ;
3101
3101
if (Z_TYPE (p -> val ) == IS_UNDEF ) continue ;
3102
3102
pos2 ++ ;
3103
- if (p -> key == NULL ) {
3104
- zend_hash_del_bucket ( in_hash , p );
3103
+ if (p -> key && in_hash == & EG ( symbol_table ) ) {
3104
+ zend_delete_global_variable ( p -> key );
3105
3105
} else {
3106
- if (in_hash == & EG (symbol_table )) {
3107
- zend_delete_global_variable (p -> key );
3108
- } else {
3109
- zend_hash_del_bucket (in_hash , p );
3110
- }
3106
+ zend_hash_del_bucket (in_hash , p );
3111
3107
}
3112
3108
}
3113
3109
}
@@ -3231,12 +3227,8 @@ PHP_FUNCTION(array_pop)
3231
3227
}
3232
3228
3233
3229
/* Delete the last value */
3234
- if (p -> key ) {
3235
- if (Z_ARRVAL_P (stack ) == & EG (symbol_table )) {
3236
- zend_delete_global_variable (p -> key );
3237
- } else {
3238
- zend_hash_del_bucket (Z_ARRVAL_P (stack ), p );
3239
- }
3230
+ if (p -> key && Z_ARRVAL_P (stack ) == & EG (symbol_table )) {
3231
+ zend_delete_global_variable (p -> key );
3240
3232
} else {
3241
3233
zend_hash_del_bucket (Z_ARRVAL_P (stack ), p );
3242
3234
}
@@ -3281,12 +3273,8 @@ PHP_FUNCTION(array_shift)
3281
3273
ZVAL_COPY_DEREF (return_value , val );
3282
3274
3283
3275
/* Delete the first value */
3284
- if (p -> key ) {
3285
- if (Z_ARRVAL_P (stack ) == & EG (symbol_table )) {
3286
- zend_delete_global_variable (p -> key );
3287
- } else {
3288
- zend_hash_del_bucket (Z_ARRVAL_P (stack ), p );
3289
- }
3276
+ if (p -> key && Z_ARRVAL_P (stack ) == & EG (symbol_table )) {
3277
+ zend_delete_global_variable (p -> key );
3290
3278
} else {
3291
3279
zend_hash_del_bucket (Z_ARRVAL_P (stack ), p );
3292
3280
}
0 commit comments