@@ -730,25 +730,19 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s
730
730
IS_CONSISTENT (ht );
731
731
HT_ASSERT_RC1 (ht );
732
732
733
+ if (!ZSTR_IS_INTERNED (key )) {
734
+ zend_string_hash_val (key );
735
+ }
736
+
733
737
if (UNEXPECTED (HT_FLAGS (ht ) & (HASH_FLAG_UNINITIALIZED |HASH_FLAG_PACKED ))) {
734
738
if (EXPECTED (HT_FLAGS (ht ) & HASH_FLAG_UNINITIALIZED )) {
735
739
zend_hash_real_init_mixed (ht );
736
- if (!ZSTR_IS_INTERNED (key )) {
737
- zend_string_addref (key );
738
- HT_FLAGS (ht ) &= ~HASH_FLAG_STATIC_KEYS ;
739
- zend_string_hash_val (key );
740
- }
741
740
goto add_to_hash ;
742
741
} else {
743
742
zend_hash_packed_to_hash (ht );
744
- if (!ZSTR_IS_INTERNED (key )) {
745
- zend_string_addref (key );
746
- HT_FLAGS (ht ) &= ~HASH_FLAG_STATIC_KEYS ;
747
- zend_string_hash_val (key );
748
- }
749
743
}
750
744
} else if ((flag & HASH_ADD_NEW ) == 0 || ZEND_DEBUG ) {
751
- p = zend_hash_find_bucket (ht , key , 0 );
745
+ p = zend_hash_find_bucket (ht , key , 1 );
752
746
753
747
if (p ) {
754
748
zval * data ;
@@ -781,19 +775,15 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s
781
775
ZVAL_COPY_VALUE (data , pData );
782
776
return data ;
783
777
}
784
- if (!ZSTR_IS_INTERNED (key )) {
785
- zend_string_addref (key );
786
- HT_FLAGS (ht ) &= ~HASH_FLAG_STATIC_KEYS ;
787
- }
788
- } else if (!ZSTR_IS_INTERNED (key )) {
789
- zend_string_addref (key );
790
- HT_FLAGS (ht ) &= ~HASH_FLAG_STATIC_KEYS ;
791
- zend_string_hash_val (key );
792
778
}
793
779
794
780
ZEND_HASH_IF_FULL_DO_RESIZE (ht ); /* If the Hash table is full, resize it */
795
781
796
782
add_to_hash :
783
+ if (!ZSTR_IS_INTERNED (key )) {
784
+ zend_string_addref (key );
785
+ HT_FLAGS (ht ) &= ~HASH_FLAG_STATIC_KEYS ;
786
+ }
797
787
idx = ht -> nNumUsed ++ ;
798
788
ht -> nNumOfElements ++ ;
799
789
arData = ht -> arData ;
0 commit comments