wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 230491250a1447df219efb3f069a5c3fe524fc74
parent aaf9ec62504a6c8f52ad021b3d6c19aba1859977
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Mon,  3 Apr 2006 13:05:40 +0200

changed evector somewhat to use memmove and stdio


Diffstat:
libcext/cext.h | 4++--
libcext/evector.c | 15+++++++--------
2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/libcext/cext.h b/libcext/cext.h @@ -25,8 +25,8 @@ typedef struct { \ EVECTOR(evector_t, void*); -void cext_evector_attach(evector_t *vector, void *data_to_be_added); -void cext_evector_detach(evector_t *vector, void *data_to_be_removed); +void cext_evector_attach(evector_t *v, void *p); +void cext_evector_detach(evector_t *v, void *p); /* estrdup.c */ char *cext_estrdup(const char *s); diff --git a/libcext/evector.c b/libcext/evector.c @@ -1,19 +1,20 @@ /* extendible vectors. Icarus Sparry 2006. Public domain. */ #include <stdlib.h> +#include <stdio.h> +#include <string.h> #include <unistd.h> #include "cext.h" -#define ERRMSG "Out of memory in cext_evector_attach\n" void cext_evector_attach(evector_t *v, void *p) { ++v->size; if (!(v->data = realloc(v->data, v->size * sizeof(void *)))) { - write(2,ERRMSG,sizeof(ERRMSG)-1); - exit(99); + fprintf(stderr, "%s\n", "Out of memory in cext_evector_attach\n"); + exit(1); } - v->data[v->size-1]=p; + v->data[v->size - 1]=p; } void @@ -21,13 +22,11 @@ cext_evector_detach(evector_t *v, void *data) { void **p = v->data, **end; if (!p) return; - for(end=p+v->size-1; p<=end; p++) + for(end = p + v->size - 1; p <= end; p++) if (*p == data) { - for(; p<end; p++) - p[0] = p[1]; /* Could use memmove rather than this loop */ + memmove(p, p + 1, end - (p + 1)); *end = nil; --v->size; return; } } -