[evolution-groupwise] Bug #665036 - Memory leak with allocated string value



commit 5ac0db1825fee7c03cc72513d663a758db481ce6
Author: Milan Crha <mcrha redhat com>
Date:   Wed Jan 4 14:54:55 2012 +0100

    Bug #665036 - Memory leak with allocated string value

 src/camel/camel-groupwise-settings.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/src/camel/camel-groupwise-settings.c b/src/camel/camel-groupwise-settings.c
index 0617a34..d04389d 100644
--- a/src/camel/camel-groupwise-settings.c
+++ b/src/camel/camel-groupwise-settings.c
@@ -189,6 +189,18 @@ groupwise_settings_get_property (GObject *object,
 }
 
 static void
+groupwise_settings_finalize (GObject *object)
+{
+	CamelGroupwiseSettings *settings = CAMEL_GROUPWISE_SETTINGS (object);
+
+	if (settings && settings->priv)
+		g_free (settings->priv->soap_port);
+
+	/* Chain up to parent's finalize() method. */
+	G_OBJECT_CLASS (camel_groupwise_settings_parent_class)->finalize (object);
+}
+
+static void
 camel_groupwise_settings_class_init (CamelGroupwiseSettingsClass *class)
 {
 	GObjectClass *object_class;
@@ -198,6 +210,7 @@ camel_groupwise_settings_class_init (CamelGroupwiseSettingsClass *class)
 	object_class = G_OBJECT_CLASS (class);
 	object_class->set_property = groupwise_settings_set_property;
 	object_class->get_property = groupwise_settings_get_property;
+	object_class->finalize = groupwise_settings_finalize;
 
 	/* Inherited from CamelNetworkSettings. */
 	g_object_class_override_property (
@@ -346,6 +359,9 @@ camel_groupwise_settings_get_soap_port (CamelGroupwiseSettings *settings)
 {
 	g_return_val_if_fail (CAMEL_IS_GROUPWISE_SETTINGS (settings), "7191");
 
+	if (!settings->priv->soap_port)
+		return "7191";
+
 	return settings->priv->soap_port;
 }
 
@@ -355,10 +371,11 @@ camel_groupwise_settings_set_soap_port (CamelGroupwiseSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_GROUPWISE_SETTINGS (settings));
 
+	g_free (settings->priv->soap_port);
 	if(atoi(soap_port))
 		settings->priv->soap_port = g_strdup(soap_port);
 	else
-		settings->priv->soap_port = g_strdup("7191");
+		settings->priv->soap_port = NULL;
 
 	g_object_notify (G_OBJECT (settings), "soap-port");
 }



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