From 88a111e260ae2fd9bc67f24564311a3f1b0c26b2 Mon Sep 17 00:00:00 2001 From: Joey Adams Date: Fri, 29 May 2009 01:35:07 -0400 Subject: [PATCH] Updated array module to version 0.1.1 . Important change: array_pop no longer checks if the array has elements; use array_pop_check in its place. --- ccan/array/_info | 2 +- ccan/array/array.h | 6 ++++-- ccan/array/test/run.c | 28 ++++++++++++++-------------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/ccan/array/_info b/ccan/array/_info index af3bd39f..8de66ec5 100644 --- a/ccan/array/_info +++ b/ccan/array/_info @@ -42,7 +42,7 @@ * } * * Author: Joey Adams - * Version: 0.1 + * Version: 0.1.1 * Licence: BSD */ int main(int argc, char *argv[]) diff --git a/ccan/array/array.h b/ccan/array/array.h index 69b25ec6..22923527 100644 --- a/ccan/array/array.h +++ b/ccan/array/array.h @@ -38,7 +38,9 @@ #include #endif +#ifndef HAVE_ATTRIBUTE_MAY_ALIAS #define HAVE_ATTRIBUTE_MAY_ALIAS 1 +#endif //Use the array_alias macro to indicate that a pointer has changed but strict aliasing rules are too stupid to know it #if HAVE_ATTRIBUTE_MAY_ALIAS==1 @@ -88,7 +90,7 @@ #define array_append_items(array, items, count) do {size_t __count = (count); array_resize(array, (array).size+__count); memcpy((array).item+(array).size-__count, items, __count*sizeof(*(array).item));} while(0) #define array_prepend(array, ...) do {array_resize(array, (array).size+1); memmove((array).item+1, (array).item, ((array).size-1)*sizeof(*(array).item)); *(array).item = (__VA_ARGS__);} while(0) #define array_push(array, ...) array_append(array, __VA_ARGS__) -#define array_pop(array) ((array).size ? array_pop_nocheck(array) : NULL) +#define array_pop_check(array) ((array).size ? array_pop(array) : NULL) #define array_growalloc(array, newAlloc) do {size_t __newAlloc=(newAlloc); if (__newAlloc > (array).alloc) array_realloc(array, (__newAlloc+63)&~63); } while(0) #if HAVE_STATEMENT_EXPR==1 @@ -97,7 +99,7 @@ //We do just fine by ourselves -#define array_pop_nocheck(array) ((array).item[--(array).size]) +#define array_pop(array) ((array).item[--(array).size]) #if HAVE_TYPEOF==1 diff --git a/ccan/array/test/run.c b/ccan/array/test/run.c index f999b213..b0b672ba 100644 --- a/ccan/array/test/run.c +++ b/ccan/array/test/run.c @@ -58,7 +58,7 @@ int main(void) { } reset(arr); - testing(array_prepend, array_pop_nocheck); + testing(array_prepend, array_pop); { for (i=countof(lotsOfNumbers); i;) array_prepend(arr, lotsOfNumbers[--i]); @@ -67,7 +67,7 @@ int main(void) { ok1(!memcmp(arr.item, lotsOfNumbers, sizeof(lotsOfNumbers))); for (i=countof(lotsOfNumbers); i;) { - if (array_pop_nocheck(arr) != (long)lotsOfNumbers[--i]) { + if (array_pop(arr) != (long)lotsOfNumbers[--i]) { i++; break; } @@ -251,7 +251,7 @@ int main(void) { } reset(str); - testing(array_appends, array_prepends, array_pop); + testing(array_appends, array_prepends, array_pop_check); { #ifndef ARRAY_USE_TALLOC array(const char*) array = array_new(); @@ -276,19 +276,19 @@ int main(void) { array.item[7]==n[7] && array.item[8]==n[8]); - ok1(array_pop(array)==n[8] && - array_pop(array)==n[7] && - array_pop(array)==n[6] && - array_pop(array)==n[5] && - array_pop(array)==n[4] && - array_pop(array)==n[3] && - array_pop(array)==n[2] && - array_pop(array)==n[1] && - array_pop(array)==n[0]); + ok1(array_pop_check(array)==n[8] && + array_pop_check(array)==n[7] && + array_pop_check(array)==n[6] && + array_pop_check(array)==n[5] && + array_pop_check(array)==n[4] && + array_pop_check(array)==n[3] && + array_pop_check(array)==n[2] && + array_pop_check(array)==n[1] && + array_pop_check(array)==n[0]); ok1(array.size==0); - ok1(array_pop(array)==NULL && array_pop(array)==NULL && array_pop(array)==NULL); + ok1(array_pop_check(array)==NULL && array_pop_check(array)==NULL && array_pop_check(array)==NULL); array_free(array); } @@ -296,7 +296,7 @@ int main(void) { trace("Freeing amalgams (internal)"); freeAmalgams(); - return 0; + return exit_status(); } static void generateAmalgams(void) { -- 2.39.2