commit 5829bfa74713d8e465c1b2b73cccca96e9dc304b
parent d2c66778922818b3e2b340c3500dd5713b21704e
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Wed, 5 Apr 2006 18:26:15 +0200
siplified cext_vdetach
Diffstat:
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/libcext/vector.c b/libcext/vector.c
@@ -1,6 +1,7 @@
/* extendible vectors. Icarus Sparry 2006. Public domain. */
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include "cext.h"
@@ -19,13 +20,11 @@ cext_vattach(Vector *v, void *p)
void
cext_vdetach(Vector *v, void *data)
{
- void **p = v->data, **end;
- if (!p) return;
- for(end = p + v->size - 1; p <= end; p++)
- if (*p == data) {
- for(; p < end; p++)
- p[0] = p[1];
- *end = nil;
+ unsigned int i;
+ for(i = 0; i < v->size; i++)
+ if (v->data[i] == data) {
+ memmove(v->data + i, v->data + i + 1,
+ (v->size - i) * sizeof(void *));
--v->size;
return;
}