X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Farray.c;h=ff7f02ce27afef98a3115e08b2759bcbaaa16e84;hb=4e56e5341f632827af3810e26cd59ac0c15b642b;hp=6e96bd56b0d5635324e8c04f71f41f4b4b94d66a;hpb=161340d4869645423f2c3e0f803d3bde671e2e2c;p=ngircd-alex.git diff --git a/src/ngircd/array.c b/src/ngircd/array.c index 6e96bd56..ff7f02ce 100644 --- a/src/ngircd/array.c +++ b/src/ngircd/array.c @@ -12,7 +12,7 @@ #include "array.h" -static char UNUSED id[] = "$Id: array.c,v 1.11 2006/07/01 22:11:48 fw Exp $"; +static char UNUSED id[] = "$Id: array.c,v 1.15 2007/11/18 15:05:35 alex Exp $"; #include @@ -28,9 +28,9 @@ static char UNUSED id[] = "$Id: array.c,v 1.11 2006/07/01 22:11:48 fw Exp $"; #define array_UNUSABLE(x) ( !(x)->mem || (0 == (x)->allocated) ) -#define ALIGN_32U(x) (((x)+31U ) & ~(31U)) -#define ALIGN_1024U(x) (((x)+1023U) & ~(1023U)) -#define ALIGN_4096U(x) (((x)+4095U) & ~(4095U)) +#define ALIGN_32U(x) (((x)+(unsigned)31 ) & ~((unsigned)31)) +#define ALIGN_1024U(x) (((x)+(unsigned)1023) & ~((unsigned)1023)) +#define ALIGN_4096U(x) (((x)+(unsigned)4095) & ~((unsigned)4095)) static bool @@ -66,10 +66,7 @@ array_alloc(array * a, size_t size, size_t pos) assert(size > 0); - if (pos_plus1 < pos) - return NULL; - - if (!safemult_sizet(size, pos_plus1, &alloc)) + if (pos_plus1 == 0 || !safemult_sizet(size, pos_plus1, &alloc)) return NULL; if (a->allocated < alloc) { @@ -250,20 +247,22 @@ void * array_get(array * a, size_t membersize, size_t pos) { size_t totalsize; + size_t posplus1 = pos + 1; assert(membersize > 0); assert(a != NULL); - if (array_UNUSABLE(a)) + if (!posplus1 || array_UNUSABLE(a)) return NULL; - if (!safemult_sizet(pos, membersize, &totalsize)) + if (!safemult_sizet(posplus1, membersize, &totalsize)) return NULL; if (a->allocated < totalsize) return NULL; - return a->mem + pos * membersize; + totalsize = pos * membersize; + return a->mem + totalsize; } @@ -271,7 +270,7 @@ void array_free(array * a) { assert(a != NULL); -#ifdef DEBUG +#ifdef DEBUG_ARRAY Log(LOG_DEBUG, "array_free(): %u bytes free'd (%u bytes still used at time of free()).", a->allocated, a->used); @@ -283,16 +282,6 @@ array_free(array * a) } -void -array_free_wipe(array * a) -{ - if (!array_UNUSABLE(a)) - memset(a->mem, 0, a->allocated); - - array_free(a); -} - - void * array_start(const array * const a) { @@ -331,9 +320,6 @@ array_moveleft(array * a, size_t membersize, size_t pos) assert(a != NULL); assert(membersize > 0); - if (!pos) - return; - if (!safemult_sizet(membersize, pos, &bytepos)) { a->used = 0; return;