Check for BitVector capacity overflow

The actual capacity of a BitVector is rounded up to the next multiple
of eight, so capacity must not be larger than (SIZE_MAX - 7).
diff --git a/core/Lucy/Object/BitVector.c b/core/Lucy/Object/BitVector.c
index e340e18..202475a 100644
--- a/core/Lucy/Object/BitVector.c
+++ b/core/Lucy/Object/BitVector.c
@@ -48,8 +48,7 @@
 
 static CFISH_INLINE size_t
 SI_octet_size(size_t bit_size) {
-    if (bit_size == 0) { return 0; }
-    return (bit_size - 1) / 8 + 1;
+    return (bit_size + 7) / 8;
 }
 
 BitVector*
@@ -61,6 +60,10 @@
 BitVector*
 BitVec_init(BitVector *self, size_t capacity) {
     BitVectorIVARS *const ivars = BitVec_IVARS(self);
+
+    if (capacity > SIZE_MAX - 7) {
+        THROW(ERR, "BitVector capacity too large");
+    }
     const size_t byte_size = SI_octet_size(capacity);
 
     // Derive.
@@ -130,6 +133,9 @@
 BitVec_Grow_IMP(BitVector *self, size_t capacity) {
     BitVectorIVARS *const ivars = BitVec_IVARS(self);
     if (capacity > ivars->cap) {
+        if (capacity > SIZE_MAX - 7) {
+            THROW(ERR, "BitVector capacity overflow");
+        }
         const size_t old_byte_cap  = SI_octet_size(ivars->cap);
         const size_t new_byte_cap  = SI_octet_size(capacity);
         const size_t num_new_bytes = new_byte_cap - old_byte_cap;