diff --git a/m-mempool.h b/m-mempool.h index 8c1aeb42..ec38130a 100644 --- a/m-mempool.h +++ b/m-mempool.h @@ -110,10 +110,12 @@ M_C3(mempool_,name,_segment_t) *new_segment = malloc (s); \ if (new_segment == NULL) { \ M_MEMORY_FULL(s); \ + abort(); \ return NULL; \ } \ new_segment->next = segment; \ new_segment->count = 0; \ + mem->current_segment = new_segment; \ segment = new_segment; \ count = 0; \ } \ diff --git a/tests/test-mmempool.c b/tests/test-mmempool.c index d31d747a..bf95a9a1 100644 --- a/tests/test-mmempool.c +++ b/tests/test-mmempool.c @@ -33,29 +33,29 @@ static void test(void) mempool_uint_t m; mempool_uint_init(m); - unsigned int *tab[10000]; - for(unsigned int i = 0; i < 10000; i++) { + unsigned int *tab[100000]; + for(unsigned int i = 0; i < 100000; i++) { tab[i] = mempool_uint_alloc(m); *tab[i] = i; } - for(unsigned int i = 0; i < 10000; i++) { + for(unsigned int i = 0; i < 100000; i++) { assert (*tab[i] == i); } - for(unsigned int i = 0; i < 10000; i+=2) { + for(unsigned int i = 0; i < 100000; i+=2) { mempool_uint_free(m, tab[i]); tab[i] = NULL; } - for(unsigned int i = 1; i < 10000; i+=2) { + for(unsigned int i = 1; i < 100000; i+=2) { assert (*tab[i] == i); } - for(unsigned int i = 0; i < 10000; i+=2) { + for(unsigned int i = 0; i < 100000; i+=2) { tab[i] = mempool_uint_alloc(m); *tab[i] = i; } - for(unsigned int i = 0; i < 10000; i++) { + for(unsigned int i = 0; i < 100000; i++) { assert (*tab[i] == i); } - for(unsigned int i = 0; i < 10000; i++) { + for(unsigned int i = 0; i < 100000; i++) { mempool_uint_free(m, tab[i]); tab[i] = NULL; }