summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorДилян Палаузов <git-dpa@aegee.org>2019-07-11 11:17:42 +0000
committerДилян Палаузов <git-dpa@aegee.org>2019-07-11 16:45:32 +0000
commit58ce6c4ddffe02d2fb66687d825a12ed4ea373e9 (patch)
treedb224a1e45fcfbd508831c7dcd40433c109242a5
parent277c363924b9b7daf272c625984796fc76c0cc5d (diff)
downloadevolution-data-server-58ce6c4ddffe02d2fb66687d825a12ed4ea373e9.tar.gz
M!26 - Fix a possible memory leak in e_cal_client_get_component_as_string()
Closes https://gitlab.gnome.org/GNOME/evolution-data-server/merge_requests/26
-rw-r--r--src/calendar/libecal/e-cal-client.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/calendar/libecal/e-cal-client.c b/src/calendar/libecal/e-cal-client.c
index 7e2738355..4cf3b14ba 100644
--- a/src/calendar/libecal/e-cal-client.c
+++ b/src/calendar/libecal/e-cal-client.c
@@ -3125,16 +3125,6 @@ append_timezone_string (gpointer key,
GString *vcal_string = data;
g_string_append (vcal_string, value);
- g_free (value);
-}
-
-/* This simply frees the hash values. */
-static void
-free_timezone_string (gpointer key,
- gpointer value,
- gpointer data)
-{
- g_free (value);
}
/**
@@ -3162,7 +3152,7 @@ e_cal_client_get_component_as_string (ECalClient *client,
g_return_val_if_fail (E_IS_CAL_CLIENT (client), NULL);
g_return_val_if_fail (icalcomp != NULL, NULL);
- timezone_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ timezone_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free);
/* Add any timezones needed to the hash. We use a hash since we only
* want to add each timezone once at most. */
@@ -3171,7 +3161,7 @@ e_cal_client_get_component_as_string (ECalClient *client,
cbdata.success = TRUE;
i_cal_component_foreach_tzid (icalcomp, foreach_tzid_callback, &cbdata);
if (!cbdata.success) {
- g_hash_table_foreach (timezone_hash, free_timezone_string, NULL);
+ g_hash_table_destroy (timezone_hash);
return NULL;
}