| 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 |