From 341fc9d4ef9f62b5a39806e18efced597e39e2bf Mon Sep 17 00:00:00 2001 From: brianb Date: Mon, 12 Apr 2004 14:33:56 +0000 Subject: [PATCH] free backend structures on exit --- ChangeLog | 5 +++++ include/mdbtools.h | 1 + src/libmdb/backend.c | 11 +++++++++++ src/libmdb/mem.c | 3 +-- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c685b6b..48007be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Apr 12 09:56:23 EDT 2004 Brian Bruns + * include/mdbtools: + * src/libmdb/mem.c: + * src/libmdb/backend.c: free backends on exit (Jeff Smith) + Thu Mar 25 04:56:05 EST 2004 Brian Bruns * src/odbc/odbc.c(_SQLFreeStmt): call mdb_sql_reset on stmt drop (Jeff Smith) diff --git a/include/mdbtools.h b/include/mdbtools.h index 4645a90..9e3265b 100644 --- a/include/mdbtools.h +++ b/include/mdbtools.h @@ -446,6 +446,7 @@ extern char *mdb_get_coltype_string(MdbBackend *backend, int col_type); extern int mdb_coltype_takes_length(MdbBackend *backend, int col_type); extern void mdb_init_backends(); extern void mdb_register_backend(MdbBackend *backend, char *backend_name); +extern void mdb_remove_backends(); extern int mdb_set_default_backend(MdbHandle *mdb, char *backend_name); extern char *mdb_get_relationships(MdbHandle *mdb); diff --git a/src/libmdb/backend.c b/src/libmdb/backend.c index 02208fe..30ce3ea 100644 --- a/src/libmdb/backend.c +++ b/src/libmdb/backend.c @@ -192,6 +192,17 @@ void mdb_register_backend(MdbBackend *backend, char *backend_name) { g_hash_table_insert(mdb_backends,backend_name,backend); } +static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data) +{ + MdbBackend *backend = (MdbBackend *)value; + g_free (backend); + return TRUE; +} +void mdb_remove_backends() +{ + g_hash_table_foreach_remove(mdb_backends, mdb_drop_backend, NULL); + g_hash_table_destroy(mdb_backends); +} int mdb_set_default_backend(MdbHandle *mdb, char *backend_name) { MdbBackend *backend; diff --git a/src/libmdb/mem.c b/src/libmdb/mem.c index 1a77969..7a43d85 100644 --- a/src/libmdb/mem.c +++ b/src/libmdb/mem.c @@ -31,8 +31,7 @@ void mdb_init() void mdb_exit() { - /* FIX ME -- need to deallocate backend structures */ - g_hash_table_destroy(mdb_backends); + mdb_remove_backends(); } MdbStatistics *mdb_alloc_stats(MdbHandle *mdb)