summaryrefslogtreecommitdiff
path: root/c_src/permdb.c
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2016-02-11 07:36:26 +0100
committerLinus Nordberg <linus@nordu.net>2016-04-25 13:14:11 +0200
commit37c9792c43cd62bd2a5471506a0ca687599bddc9 (patch)
tree8cd40ed1ae275b844a74391c3701d9cd1e4dfc68 /c_src/permdb.c
parentcd7a7b8db2b89b4e2a26fa9f4ccc58f3ff72d6f9 (diff)
Free permdb object on error
Diffstat (limited to 'c_src/permdb.c')
-rw-r--r--c_src/permdb.c5
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;
}
}