diff --git a/src/dump.c b/src/dump.c
index 3ce3ce1d33dc84a31347a90dd266e1b4c9e6ae05..9c519c2130b2612309e623b8234e3369214b52e2 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -49,7 +49,7 @@
 void *dump_get(struct dump *d, size_t count, size_t *offset) {
   size_t local_offset = atomic_add(&d->count, count);
 #ifdef SWIFT_DEBUG_CHECKS
-  if (d->count > d->size) error("A new dump file should have been created.");
+  if (d->count > d->size) error("Dump file is too small.");
 #endif
   *offset = local_offset + d->file_offset;
   return (char *)d->data + local_offset;
@@ -77,7 +77,7 @@ void dump_ensure(struct dump *d, size_t required_size, size_t increase_size) {
   const size_t trunc_count = d->count & d->page_mask;
   d->file_offset += trunc_count;
   d->count -= trunc_count;
-  d->size = (increase_size + ~d->page_mask) & d->page_mask;
+  d->size = (d->count + increase_size + ~d->page_mask) & d->page_mask;
 
   /* Re-allocate the file size. */
   if (posix_fallocate(d->fd, d->file_offset, d->size) != 0) {
diff --git a/tests/testDump.c b/tests/testDump.c
index f47a44256536d6ac1d9676c844f7081a6daa5ca4..878daae9cc0deddd6f9fb02857041f705110743c 100644
--- a/tests/testDump.c
+++ b/tests/testDump.c
@@ -73,7 +73,7 @@ int main(int argc, char *argv[]) {
   for (int run = 0; run < num_runs; run++) {
 
     /* Ensure capacity. */
-    dump_ensure(&d, 7 * chunk_size);
+    dump_ensure(&d, 7 * chunk_size, 7 * chunk_size);
 
     /* Dump a few numbers. */
     printf("dumping %i chunks...\n", chunk_size);