From 90c4468ba5d334ffaa627f6f63fba444119bac47 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 10 Jul 2021 13:48:11 +0200 Subject: [PATCH 2/3] mdb-provider: Store filename used to open the DB in our private data With mdbtools >= 0.9.0, the MdbFile struct no longer has a filename member, instead store the filename passed to mdb_open() in our private data. Note this also fixes the dynamically allocated string returned by g_build_filename() being leaked. --- providers/mdb/gda-mdb-provider.c | 4 +++- providers/mdb/gda-mdb.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/providers/mdb/gda-mdb-provider.c b/providers/mdb/gda-mdb-provider.c index 82b085ca7..c82a37aee 100644 --- a/providers/mdb/gda-mdb-provider.c +++ b/providers/mdb/gda-mdb-provider.c @@ -288,6 +288,7 @@ gda_mdb_provider_open_connection (GdaServerProvider *provider, GdaConnection *cn cdata = g_new0 (MdbConnectionData, 1); cdata->cnc = cnc; + cdata->filename = filename; cdata->server_version = NULL; #ifdef MDB_WITH_WRITE_SUPPORT cdata->mdb = mdb_open (filename, MDB_WRITABLE); @@ -562,7 +563,7 @@ gda_mdb_provider_get_database (GdaServerProvider *provider, GdaConnection *cnc) if (!cdata) return NULL; - return (const gchar *) cdata->mdb->f->filename; + return cdata->filename; } /* @@ -572,5 +573,6 @@ static void gda_mdb_free_cnc_data (MdbConnectionData *cdata) { g_free (cdata->server_version); + g_free (cdata->filename); g_free (cdata); } diff --git a/providers/mdb/gda-mdb.h b/providers/mdb/gda-mdb.h index 4744fe593..14eaf5d22 100644 --- a/providers/mdb/gda-mdb.h +++ b/providers/mdb/gda-mdb.h @@ -38,6 +38,7 @@ typedef struct { GdaConnection *cnc; MdbHandle *mdb; + gchar *filename; gchar *server_version; } MdbConnectionData; -- 2.31.1