Moving some NULL pointer tests

This commit is contained in:
whydoubt 2004-04-25 02:42:36 +00:00
parent 382a0fca39
commit 4ef8af1826
3 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,7 @@
Sat Apr 24 21:39:10 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* src/libmdb/file.c:
* src/libmdb/mem.c: Moving some NULL pointer tests
Sat Apr 24 15:27:51 CDT 2004 Jeff Smith <whydoubt@yahoo.com> Sat Apr 24 15:27:51 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* src/libmdb/file.c: * src/libmdb/file.c:
* src/libmdb/props.c * src/libmdb/props.c

View File

@ -173,9 +173,7 @@ mdb_close(MdbHandle *mdb)
{ {
if (mdb->f) { if (mdb->f) {
mdb->f->refs--; mdb->f->refs--;
if (mdb->f->refs<=0) { mdb_free_file(mdb->f);
mdb_free_file(mdb->f);
}
} }
mdb_free_handle(mdb); mdb_free_handle(mdb);
} }

View File

@ -60,6 +60,7 @@ MdbStatistics *mdb_alloc_stats(MdbHandle *mdb)
void void
mdb_free_stats(MdbHandle *mdb) mdb_free_stats(MdbHandle *mdb)
{ {
if (!mdb->stats) return;
g_free(mdb->stats); g_free(mdb->stats);
mdb->stats = NULL; mdb->stats = NULL;
} }
@ -78,6 +79,8 @@ void
mdb_free_file(MdbFile *f) mdb_free_file(MdbFile *f)
{ {
if (!f) return; if (!f) return;
if (f->refs > 0) return;
if (f->fd) close(f->fd); if (f->fd) close(f->fd);
if (f->filename) free(f->filename); if (f->filename) free(f->filename);
free(f); free(f);
@ -98,9 +101,9 @@ void mdb_free_handle(MdbHandle *mdb)
{ {
if (!mdb) return; if (!mdb) return;
if (mdb->stats) mdb_free_stats(mdb); mdb_free_stats(mdb);
if (mdb->catalog) mdb_free_catalog(mdb); mdb_free_catalog(mdb);
if (mdb->f && mdb->f->refs<=0) mdb_free_file(mdb->f); mdb_free_file(mdb->f);
if (mdb->backend_name) free(mdb->backend_name); if (mdb->backend_name) free(mdb->backend_name);
free(mdb); free(mdb);
mdb = NULL; mdb = NULL;
@ -114,6 +117,9 @@ void mdb_free_catalog(MdbHandle *mdb)
{ {
unsigned int i; unsigned int i;
MdbCatalogEntry *entry; MdbCatalogEntry *entry;
if (!mdb->catalog) return;
for (i=0; i<mdb->catalog->len; i++) { for (i=0; i<mdb->catalog->len; i++) {
entry = g_ptr_array_index(mdb->catalog, i); entry = g_ptr_array_index(mdb->catalog, i);
g_free (entry); g_free (entry);