Fix bug in insert_v (missing initialisation).

Update API of insert_v to give the number of elements to insert (much more logic).
This commit is contained in:
Patrick Pelissier committed 2017-05-02 20:17:16 +02:00
1 parent afae256429
commit a65c80d25a
1 file changed
+6 -6
+6 -6
View File
@@ -419,11 +419,11 @@
} \ } \
\ \
static inline void \ static inline void \
M_C3(array_, name, _insert_v)(array_t v, size_t i, size_t j) \ M_C3(array_, name, _insert_v)(array_t v, size_t i, size_t num) \
{ \ { \
ARRAYI_CONTRACT(v); \ ARRAYI_CONTRACT(v); \
assert(i < j && j <= v->size); \ assert(i <= v->size); \
size_t size = v->size + (j-i); \ size_t size = v->size + num; \
if (size > v->alloc) { \ if (size > v->alloc) { \
size_t alloc = ARRAYI_INC_ALLOC_SIZE(oplist, size) ; \ size_t alloc = ARRAYI_INC_ALLOC_SIZE(oplist, size) ; \
type *ptr = M_GET_REALLOC oplist (type, v->ptr, alloc); \ type *ptr = M_GET_REALLOC oplist (type, v->ptr, alloc); \
@@ -434,9 +434,9 @@
v->ptr = ptr; \ v->ptr = ptr; \
v->alloc = alloc; \ v->alloc = alloc; \
} \ } \
memmove(&v->ptr[j], &v->ptr[i], sizeof(type)*(v->size - i) ); \ memmove(&v->ptr[i+num], &v->ptr[i], sizeof(type)*(v->size - i) ); \
for(size_t k = i ; k < j; k++) \ for(size_t k = i ; k < i+num; k++) \
M_GET_INIT oplist(v->ptr[i]); \ M_GET_INIT oplist(v->ptr[k]); \
v->size = size; \ v->size = size; \
ARRAYI_CONTRACT(v); \ ARRAYI_CONTRACT(v); \
} \ } \