diff --git a/m-array.h b/m-array.h index fcd0a76d..13a17211 100644 --- a/m-array.h +++ b/m-array.h @@ -133,6 +133,7 @@ M_ASSERT (a != NULL); \ M_ASSERT (a->size <= a->alloc); \ M_ASSERT (a->size == 0 || a->ptr != NULL); \ + M_ASSERT (a->alloc == 0 || a->ptr != NULL); \ } while (0) /* Deferred evaluation for the array definition, @@ -205,7 +206,8 @@ M_ARRA4_CONTRACT(v); \ M_C(name, _clean)(v); \ M_CALL_FREE(oplist, v->ptr); \ - v->alloc = 0; \ + /* This is so reusing the object implies an assertion failure */ \ + v->alloc = 1; \ v->ptr = NULL; \ } \ \ @@ -255,7 +257,8 @@ d->size = s->size; \ d->alloc = s->alloc; \ d->ptr = s->ptr; \ - s->alloc = 0; \ + /* Robustness */ \ + s->alloc = 1; \ s->ptr = NULL; \ M_ARRA4_CONTRACT(d); \ } \ diff --git a/m-buffer.h b/m-buffer.h index 4a6bf00c..cf086447 100644 --- a/m-buffer.h +++ b/m-buffer.h @@ -806,6 +806,7 @@ M_C(name, _init)(buffer_t v, size_t size) \ } \ M_CALL_FREE(oplist, buffer->Tab); \ buffer->Tab = NULL; /* safer */ \ + buffer->size = 3; \ } \ \ static inline size_t \ @@ -1131,6 +1132,7 @@ M_C(name, _init)(buffer_t v, size_t size) \ } \ M_CALL_FREE(oplist, buffer->Tab); \ buffer->Tab = NULL; /* safer */ \ + buffer->size = 3; \ } \ \