diff --git a/libraries/libmdb/mdb_stat.c b/libraries/libmdb/mdb_stat.c index 5832e26..6007510 100644 --- a/libraries/libmdb/mdb_stat.c +++ b/libraries/libmdb/mdb_stat.c @@ -36,18 +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); - mdb_txn_abort(txn); - exit(1); + goto txn_abort; } rc = mdb_stat(txn, dbi, &mst); @@ -58,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 62f019f..f8b2fe5 100644 --- a/libraries/libmdb/mdb_stata.c +++ b/libraries/libmdb/mdb_stata.c @@ -34,18 +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); - mdb_txn_abort(txn); - exit(1); + goto txn_abort; } rc = mdb_stat(txn, dbi, &mst); @@ -76,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; }