@@ -102,12 +102,12 @@ static inline void ds_vector_ensure_capacity(ds_vector_t *vector, zend_long capa
102102 }
103103}
104104
105- static inline void ds_vector_check_compact (ds_vector_t * vector )
105+ static inline void ds_vector_auto_truncate (ds_vector_t * vector )
106106{
107107 const zend_long c = vector -> capacity ;
108108 const zend_long n = vector -> size ;
109109
110- if (n < c / 4 && c / 2 > DS_VECTOR_MIN_CAPACITY ) {
110+ if (n <= c / 4 && c / 2 >= DS_VECTOR_MIN_CAPACITY ) {
111111 ds_vector_reallocate (vector , c / 2 );
112112 }
113113}
@@ -135,7 +135,7 @@ void ds_vector_remove(ds_vector_t *vector, zend_long index, zval *return_value)
135135 memmove (pos , pos + 1 , sizeof (zval ) * (vector -> size - index ));
136136 vector -> size -- ;
137137
138- ds_vector_check_compact (vector );
138+ ds_vector_auto_truncate (vector );
139139 }
140140}
141141
@@ -458,7 +458,7 @@ ds_vector_t *ds_vector_merge(ds_vector_t *vector, zval *values)
458458void ds_vector_pop (ds_vector_t * vector , zval * return_value )
459459{
460460 SET_AS_RETURN_AND_UNDEF (& vector -> buffer [-- vector -> size ]);
461- ds_vector_check_compact (vector );
461+ ds_vector_auto_truncate (vector );
462462}
463463
464464void ds_vector_pop_throw (ds_vector_t * vector , zval * return_value )
@@ -479,7 +479,7 @@ void ds_vector_shift(ds_vector_t *vector, zval *return_value)
479479
480480 vector -> size -- ;
481481 memmove (first , first + 1 , vector -> size * sizeof (zval ));
482- ds_vector_check_compact (vector );
482+ ds_vector_auto_truncate (vector );
483483}
484484
485485void ds_vector_shift_throw (ds_vector_t * vector , zval * return_value )
0 commit comments