]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fix m_vector_rem
authorfennecdjay <astor.jeremie@wanadoo.fr>
Sat, 24 Aug 2019 12:53:25 +0000 (14:53 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Sat, 24 Aug 2019 12:53:25 +0000 (14:53 +0200)
src/lib/array.c

index 4e9b3c52652abb9d7c73001174b0b9d736779c7a..ea9f47bf779a427f097d6c5ca8fdc728194b7f83 100644 (file)
@@ -86,16 +86,13 @@ ANN void m_vector_set(const M_Vector v, const m_uint i, const void* data) {
 
 ANN void m_vector_rem(const M_Vector v, m_uint index) {
   const m_uint size = ARRAY_SIZE(v);
-  char c[--ARRAY_LEN(v) * size];
-  if(index)
-    memcpy(c, ARRAY_PTR(v), index * size);
-  ++index;
-  memcpy(c + (index - 1) * size, ARRAY_PTR(v) + index * size, (ARRAY_CAP(v) - index) * size);
+  memmove(ARRAY_PTR(v) + index * size, ARRAY_PTR(v) + (index + 1) * size,
+    (ARRAY_SIZE(v) - index - 1) *size);
+  --ARRAY_LEN(v);
   if(ARRAY_LEN(v) < ARRAY_CAP(v) / 2) {
     const m_uint cap = ARRAY_CAP(v) /= 2;
     v->ptr = (m_bit*)xrealloc(v->ptr, ARRAY_OFFSET + cap * size);
   }
-  memcpy(ARRAY_PTR(v), c, ARRAY_CAP(v) * size);
 }
 
 static MFUN(vm_vector_rem) {