libgda/SOURCES/0002-mdb-provider-Store-fil...

60 lines
1.8 KiB
Diff

From 90c4468ba5d334ffaa627f6f63fba444119bac47 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
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