libtimezonemap/0003-Create-local-copies-of-string-properties.patch

76 lines
2.4 KiB
Diff

From 94fb062ff98ba6eab156493b3ad7ef210d175a79 Mon Sep 17 00:00:00 2001
From: David Shea <dshea@redhat.com>
Date: Thu, 14 Nov 2013 10:50:49 -0500
Subject: [PATCH 03/10] Create local copies of string properties.
The string values passed to set_property are owned by the caller, so we
need to create new copies of the strings to store in the private data
structure.
The dispose method already had code to free the private strings, but was
missing a check for the en_name property: added one.
---
src/tz.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/src/tz.c b/src/tz.c
index c294b44..8d83d0a 100644
--- a/src/tz.c
+++ b/src/tz.c
@@ -124,16 +124,20 @@ cc_timezone_location_set_property (GObject *object,
CcTimezoneLocationPrivate *priv = CC_TIMEZONE_LOCATION (object)->priv;
switch (property_id) {
case PROP_COUNTRY:
- priv->country = g_value_get_string(value);
+ g_free(priv->country);
+ priv->country = g_strdup(g_value_get_string(value));
break;
case PROP_FULL_COUNTRY:
- priv->full_country = g_value_get_string(value);
+ g_free(priv->full_country);
+ priv->full_country = g_strdup(g_value_get_string(value));
break;
case PROP_EN_NAME:
- priv->en_name = g_value_get_string(value);
+ g_free(priv->en_name);
+ priv->en_name = g_strdup(g_value_get_string(value));
break;
case PROP_STATE:
- priv->state = g_value_get_string(value);
+ g_free(priv->state);
+ priv->state = g_strdup(g_value_get_string(value));
break;
case PROP_LATITUDE:
priv->latitude = g_value_get_double(value);
@@ -142,10 +146,12 @@ cc_timezone_location_set_property (GObject *object,
priv->longitude = g_value_get_double(value);
break;
case PROP_ZONE:
- priv->zone = g_value_get_string(value);
+ g_strdup(priv->zone);
+ priv->zone = g_strdup(g_value_get_string(value));
break;
case PROP_COMMENT:
- priv->comment = g_value_get_string(value);
+ g_free(priv->comment);
+ priv->comment = g_strdup(g_value_get_string(value));
break;
case PROP_DIST:
priv->dist = g_value_get_double(value);
@@ -172,6 +178,12 @@ cc_timezone_location_dispose (GObject *object)
priv->full_country = NULL;
}
+ if (priv->en_name)
+ {
+ g_free (priv->en_name);
+ priv->en_name = NULL;
+ }
+
if (priv->state)
{
g_free (priv->state);
--
1.8.4.2