src/array_list.c

changeset 1655
745ae507ee14
parent 1650
aa8621b58cd7
child 1656
68a03cf89e15
equal deleted inserted replaced
1654:5ab3fe0b7859 1655:745ae507ee14
113 // determine insert position 113 // determine insert position
114 char *dst = array->data; 114 char *dst = array->data;
115 dst += index * elem_size; 115 dst += index * elem_size;
116 116
117 // do we need to move some elements? 117 // do we need to move some elements?
118 if (index < array->size) { 118 size_t elems_to_move = array->size - index;
119 size_t elems_to_move = array->size - index; 119 if (elems_to_move > 0) {
120 char *target = dst + n * elem_size; 120 char *target = dst + n * elem_size;
121 memmove(target, dst, elems_to_move * elem_size); 121 memmove(target, dst, elems_to_move * elem_size);
122 } 122 }
123 123
124 // place the new elements, if any 124 // place the new elements, if any

mercurial