From 7b34e5e88c868fc07c0b408e47f73c844ed6f9ea Mon Sep 17 00:00:00 2001 From: whydoubt Date: Sat, 24 Apr 2004 05:53:05 +0000 Subject: [PATCH] Cleaning up memory for catalogs --- ChangeLog | 2 ++ src/libmdb/file.c | 5 +++-- src/libmdb/mem.c | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index da80b9c..2045a06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ Sat Apr 24 00:02:14 CDT 2004 Jeff Smith * src/libmdb/mem.c: * src/libmdb/catalog.c: Setting various pointers to NULL after freeing. + * src/libmdb/mem.c: + * src/libmdb/file.c: Cleaning up memory for catalogs Fri Apr 16 10:48:05 EDT 2004 Brian Bruns * src/libmdb/write.c: restructuring of mdb_crack_row?() to accomodate diff --git a/src/libmdb/file.c b/src/libmdb/file.c index e2649fc..e66b21d 100644 --- a/src/libmdb/file.c +++ b/src/libmdb/file.c @@ -192,7 +192,7 @@ mdb_close(MdbHandle *mdb) MdbHandle *mdb_clone_handle(MdbHandle *mdb) { MdbHandle *newmdb; - MdbCatalogEntry *entry; + MdbCatalogEntry *entry, *data; int i; newmdb = mdb_alloc_handle(); @@ -201,7 +201,8 @@ MdbHandle *mdb_clone_handle(MdbHandle *mdb) newmdb->catalog = g_ptr_array_new(); for (i=0;inum_catalog;i++) { entry = g_ptr_array_index(mdb->catalog,i); - g_ptr_array_add(newmdb->catalog, entry); + data = g_memdup(entry,sizeof(MdbCatalogEntry)); + g_ptr_array_add(newmdb->catalog, data); } mdb->backend_name = NULL; if (mdb->f) { diff --git a/src/libmdb/mem.c b/src/libmdb/mem.c index fd47466..39ee5d7 100644 --- a/src/libmdb/mem.c +++ b/src/libmdb/mem.c @@ -112,6 +112,12 @@ void mdb_alloc_catalog(MdbHandle *mdb) } void mdb_free_catalog(MdbHandle *mdb) { + unsigned int i; + MdbCatalogEntry *entry; + for (i=0; icatalog->len; i++) { + entry = g_ptr_array_index(mdb->catalog, i); + g_free (entry); + } g_ptr_array_free(mdb->catalog, TRUE); mdb->catalog = NULL; }