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);