diff options
author | Magnus Ahltorp <map@kth.se> | 2016-02-11 07:36:26 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2016-04-25 13:14:11 +0200 |
commit | 37c9792c43cd62bd2a5471506a0ca687599bddc9 (patch) | |
tree | 8cd40ed1ae275b844a74391c3701d9cd1e4dfc68 /c_src/permdb.c | |
parent | cd7a7b8db2b89b4e2a26fa9f4ccc58f3ff72d6f9 (diff) |
Free permdb object on error
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; } } |