diff options
Diffstat (limited to 'c_src/permdb.c')
-rw-r--r-- | c_src/permdb.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/c_src/permdb.c b/c_src/permdb.c index a4344a0..4b3a6ef 100644 --- a/c_src/permdb.c +++ b/c_src/permdb.c @@ -577,18 +577,21 @@ permdb_alloc(const char *dbpath) } else if (state->datafile.filesize > 0 && state->indexfile.filesize == 0) { if (rebuild_index_file(state) < 0) { warnx("index file rebuilding failed"); + permdb_free(state); return NULL; } } if (datafile_verify_file(&state->datafile) < 0) { warnx("data file verification failed"); - return NULL; + permdb_free(state); + return NULL; } if (indexfile_verify_file(&state->indexfile) < 0) { warnx("index file verification failed, rebuilding"); if (rebuild_index_file(state) < 0) { warnx("index file rebuilding failed"); + permdb_free(state); return NULL; } } |