Make the contract of Array & Buffer fail after a clear.

This commit is contained in:
Patrick Pelissier committed 2021-02-21 21:08:35 +01:00
1 parent ed5eac6e9d
commit e25e9ba29b
2 files changed
+7 -2

No files matched your search

+5 -2
View File
@@ -133,6 +133,7 @@
M_ASSERT (a != NULL); \ M_ASSERT (a != NULL); \
M_ASSERT (a->size <= a->alloc); \ M_ASSERT (a->size <= a->alloc); \
M_ASSERT (a->size == 0 || a->ptr != NULL); \ M_ASSERT (a->size == 0 || a->ptr != NULL); \
M_ASSERT (a->alloc == 0 || a->ptr != NULL); \
} while (0) } while (0)
/* Deferred evaluation for the array definition, /* Deferred evaluation for the array definition,
@@ -205,7 +206,8 @@
M_ARRA4_CONTRACT(v); \ M_ARRA4_CONTRACT(v); \
M_C(name, _clean)(v); \ M_C(name, _clean)(v); \
M_CALL_FREE(oplist, v->ptr); \ 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; \ v->ptr = NULL; \
} \ } \
\ \
@@ -255,7 +257,8 @@
d->size = s->size; \ d->size = s->size; \
d->alloc = s->alloc; \ d->alloc = s->alloc; \
d->ptr = s->ptr; \ d->ptr = s->ptr; \
s->alloc = 0; \ /* Robustness */ \
s->alloc = 1; \
s->ptr = NULL; \ s->ptr = NULL; \
M_ARRA4_CONTRACT(d); \ M_ARRA4_CONTRACT(d); \
} \ } \
+2
View File
@@ -806,6 +806,7 @@ M_C(name, _init)(buffer_t v, size_t size) \
} \ } \
M_CALL_FREE(oplist, buffer->Tab); \ M_CALL_FREE(oplist, buffer->Tab); \
buffer->Tab = NULL; /* safer */ \ buffer->Tab = NULL; /* safer */ \
buffer->size = 3; \
} \ } \
\ \
static inline size_t \ static inline size_t \
@@ -1131,6 +1132,7 @@ M_C(name, _init)(buffer_t v, size_t size) \
} \ } \
M_CALL_FREE(oplist, buffer->Tab); \ M_CALL_FREE(oplist, buffer->Tab); \
buffer->Tab = NULL; /* safer */ \ buffer->Tab = NULL; /* safer */ \
buffer->size = 3; \
} \ } \
\ \