Index: src/pmc/resizablebooleanarray.pmc
===================================================================
--- src/pmc/resizablebooleanarray.pmc   (revision 18237)
+++ src/pmc/resizablebooleanarray.pmc   (working copy)
@@ -118,7 +118,9 @@
             real_exception(interp, NULL, E_IndexError,
                 "ResizableBooleanArray: Can't resize!");
 
-        newASize = (size / MIN_ALLOC + 1) * MIN_ALLOC;
+        newASize = (size / BITS_PER_CHAR + 1);
+        if (newASize < MIN_ALLOC)
+            newASize = MIN_ALLOC;
 
         /* Nothing allocated yet */
         if (! PMC_data(SELF)) {
@@ -189,15 +191,15 @@
         if (PMC_int_val2(SELF) <= 0) {
             Parrot_UInt1 * const sdOld = PMC_data(SELF);
             Parrot_UInt1 * const sdNew = mem_sys_allocate_zeroed(
-                ((PMC_int_val2(SELF) / MIN_ALLOC) * MIN_ALLOC)
+                ((PMC_int_val2(SELF) / BITS_PER_CHAR) * BITS_PER_CHAR)
                 + PMC_int_val(SELF)
-                + ((PMC_int_val(SELF) / MIN_ALLOC + 1) * MIN_ALLOC));
+                + ((PMC_int_val(SELF) / BITS_PER_CHAR + 1) * BITS_PER_CHAR));
             mem_sys_memmove(sdNew, sdOld + PMC_int_val2(SELF),
                 PMC_int_val(SELF));
             mem_sys_free(sdOld);
             PMC_data(SELF) = sdNew;
-            PMC_int_val2(SELF) += MIN_ALLOC;
-            PMC_int_val(SELF) += MIN_ALLOC;
+            PMC_int_val2(SELF) += BITS_PER_CHAR;
+            PMC_int_val(SELF) += BITS_PER_CHAR;
         }
 
         /* Move the head position */
@@ -232,12 +234,12 @@
 
         /* If int_val2 is bigger than our allocation unit size, size
             this thing down */
-        if (PMC_int_val2(SELF) >= MIN_ALLOC) {
+        if (PMC_int_val2(SELF) >= BITS_PER_CHAR) {
             Parrot_UInt1 * const sdOld = PMC_data(SELF);
             Parrot_UInt1 * const sdNew = mem_sys_allocate_zeroed(
-                ((PMC_int_val2(SELF) / MIN_ALLOC) * MIN_ALLOC)
+                ((PMC_int_val2(SELF) / BITS_PER_CHAR))
                 + PMC_int_val(SELF)
-                + ((PMC_int_val(SELF) / MIN_ALLOC + 1) * MIN_ALLOC));
+                + ((PMC_int_val(SELF) / BITS_PER_CHAR + 1)));
             mem_sys_memmove(sdNew, sdOld + PMC_int_val2(SELF),
                 PMC_int_val(SELF));
             mem_sys_free(sdOld);
@@ -298,7 +300,7 @@
 
         IMAGE_IO * const io = info->image_io;
         STRING *s;
-        const INTVAL size = (PMC_int_val(SELF) / MIN_ALLOC + 1) * MIN_ALLOC;
+        const INTVAL size = (PMC_int_val(SELF) / BITS_PER_CHAR + 1);
 
         io->vtable->push_integer(INTERP, io, PMC_int_val2(SELF));
         io->vtable->push_integer(INTERP, io, PMC_int_val(SELF));

