[libgda] More thread-wrapped connection corrections



commit 182c707a37d71d187a8dac1def8298d191986115
Author: Vivien Malerba <malerba gnome-db org>
Date:   Sat Nov 19 21:56:32 2011 +0100

    More thread-wrapped connection corrections

 libgda/thread-wrapper/gda-thread-provider.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/libgda/thread-wrapper/gda-thread-provider.c b/libgda/thread-wrapper/gda-thread-provider.c
index a9c3a43..bc0f12d 100644
--- a/libgda/thread-wrapper/gda-thread-provider.c
+++ b/libgda/thread-wrapper/gda-thread-provider.c
@@ -399,11 +399,16 @@ create_connection_data (GdaServerProvider *provider, GdaConnection *cnc, GdaQuar
 	}
 	else if (cnc_string) {
 		data = g_new0 (NewConnectionData, 1);
-		if (params)
+		if (params) {
 			data->prov_name = gda_quark_list_find (params, "PROVIDER_NAME");
+			if (data->prov_name)
+				data->prov_name = g_strdup (data->prov_name);
+		}
 		else {
 			params = gda_quark_list_new_from_string (cnc_string);
 			data->prov_name = gda_quark_list_find (params, "PROVIDER_NAME");
+			if (data->prov_name)
+				data->prov_name = g_strdup (data->prov_name);
 			gda_quark_list_free (params);
 			params = NULL;
 		}
@@ -418,6 +423,7 @@ create_connection_data (GdaServerProvider *provider, GdaConnection *cnc, GdaQuar
 		wr = gda_thread_wrapper_new ();
 		if (!wr) {
 			gda_connection_add_event_string (cnc, "%s", _("Multi threading is not supported or enabled"));
+			g_free (data->prov_name);
 			g_free (data);
 			g_static_mutex_unlock (&mutex);
 			return NULL;
@@ -447,6 +453,7 @@ create_connection_data (GdaServerProvider *provider, GdaConnection *cnc, GdaQuar
 		if (error)
 			g_error_free (error);
 		g_object_unref (wr);
+		g_free (data->prov_name);
 		g_free (data);
 		if (wr_created)
 			g_static_mutex_unlock (&mutex);
@@ -460,9 +467,9 @@ create_connection_data (GdaServerProvider *provider, GdaConnection *cnc, GdaQuar
 	cdata->cnc_provider = g_object_ref (data->out_cnc_provider);
 	cdata->wrapper = wr;
 	cdata->handlers_ids = g_array_sized_new (FALSE, FALSE, sizeof (gulong), 2);
+	g_free (data->prov_name);
 	g_free (data);
 	_gda_thread_connection_set_data (cnc, cdata);
-	gda_connection_internal_set_provider_data (cnc, cdata, NULL);
 	setup_signals (cnc, cdata);
 
 	if (wr_created) {
@@ -475,7 +482,7 @@ create_connection_data (GdaServerProvider *provider, GdaConnection *cnc, GdaQuar
 		g_static_mutex_unlock (&mutex);
 	}
 
-	return cdata;	
+	return cdata;
 }
 
 static gpointer



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]