From: Ralph Corderoy Date: Mon, 24 Apr 2017 21:58:56 +0000 (+0100) Subject: sbr/vector.c: Move assert(3)s into bvector_create(). X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/4d57f81eef643ecd34082dc872557b6b4b6ec241?ds=sidebyside sbr/vector.c: Move assert(3)s into bvector_create(). Rather than asserting on every bit-related operation, assert just when creating the vector. Whether the assertion is true is decided at compile time, so it only needs checking once; once for every vector is an easy compromise. --- diff --git a/sbr/vector.c b/sbr/vector.c index f0c8bb4c..a77ac27d 100644 --- a/sbr/vector.c +++ b/sbr/vector.c @@ -45,6 +45,9 @@ bvector_create (size_t init_size) { bvector_t vec; size_t bytes; + /* See "wider than unsigned long" comment above. */ + assert (sizeof *vec->bits <= sizeof 1ul); + NEW(vec); bytes = BVEC_BYTES (vec, init_size ? init_size : VEC_INIT_SIZE); @@ -78,7 +81,6 @@ bvector_clear (bvector_t vec, size_t n) { if (n >= vec->maxsize) bvector_resize (vec, n); - assert (sizeof *vec->bits <= sizeof 1ul); vec->bits[word] &= ~(1ul << offset); } @@ -96,7 +98,6 @@ bvector_set (bvector_t vec, size_t n) { if (n >= vec->maxsize) bvector_resize (vec, n); - assert (sizeof *vec->bits <= sizeof 1ul); vec->bits[word] |= 1ul << offset; } @@ -105,7 +106,6 @@ bvector_at (bvector_t vec, size_t i) { size_t word = BVEC_WORD (vec, i); size_t offset = BVEC_OFFSET (vec, i); - assert (sizeof *vec->bits <= sizeof 1ul); return i < vec->maxsize ? (vec->bits[word] & (1ul << offset) ? 1 : 0) : 0;