diff --git a/libraries/libmdb/mdb_stat.c b/libraries/libmdb/mdb_stat.c index a5f484d063..6007510c6b 100644 --- a/libraries/libmdb/mdb_stat.c +++ b/libraries/libmdb/mdb_stat.c @@ -36,17 +36,17 @@ int main(int argc,char * argv[]) rc = mdb_env_open(env, envname, MDB_RDONLY, 0); if (rc) { printf("mdb_env_open failed, error %d\n", rc); - exit(1); + goto env_close; } rc = mdb_txn_begin(env, NULL, 1, &txn); if (rc) { printf("mdb_txn_begin failed, error %d\n", rc); - exit(1); + goto env_close; } rc = mdb_open(txn, subname, 0, &dbi); if (rc) { printf("mdb_open failed, error %d\n", rc); - exit(1); + goto txn_abort; } rc = mdb_stat(txn, dbi, &mst); @@ -57,8 +57,10 @@ int main(int argc,char * argv[]) printf("Overflow pages: %zu\n", mst.ms_overflow_pages); printf("Entries: %zu\n", mst.ms_entries); mdb_close(env, dbi); +txn_abort: mdb_txn_abort(txn); +env_close: mdb_env_close(env); - return 0; + return rc ? EXIT_FAILURE : EXIT_SUCCESS; } diff --git a/libraries/libmdb/mdb_stata.c b/libraries/libmdb/mdb_stata.c index 106cb8eb1f..f8b2fe59a8 100644 --- a/libraries/libmdb/mdb_stata.c +++ b/libraries/libmdb/mdb_stata.c @@ -34,17 +34,17 @@ int main(int argc,char * argv[]) rc = mdb_env_open(env, envname, MDB_RDONLY, 0); if (rc) { printf("mdb_env_open failed, error %d\n", rc); - exit(1); + goto env_close; } rc = mdb_txn_begin(env, NULL, 1, &txn); if (rc) { printf("mdb_txn_begin failed, error %d\n", rc); - exit(1); + goto env_close; } rc = mdb_open(txn, NULL, 0, &dbi); if (rc) { printf("mdb_open failed, error %d\n", rc); - exit(1); + goto txn_abort; } rc = mdb_stat(txn, dbi, &mst); @@ -75,8 +75,10 @@ int main(int argc,char * argv[]) } mdb_cursor_close(cursor); mdb_close(env, dbi); +txn_abort: mdb_txn_abort(txn); +env_close: mdb_env_close(env); - return 0; + return rc ? EXIT_FAILURE : EXIT_SUCCESS; }