From 0b0b94a49cd63bb1e1933cbe674c944c28ac24fb Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Thu, 24 Mar 2011 13:43:07 -0500 Subject: fix crash when emptying location list --- src/datetime-prefs-locations.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/datetime-prefs-locations.c b/src/datetime-prefs-locations.c index 5550450..d13f95a 100644 --- a/src/datetime-prefs-locations.c +++ b/src/datetime-prefs-locations.c @@ -229,6 +229,7 @@ fill_from_settings (GObject * store, GSettings * conf) static void save_to_settings (GObject * store, GSettings * conf) { + gboolean empty = TRUE; GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); @@ -246,13 +247,21 @@ save_to_settings (GObject * store, GSettings * conf) gchar * settings_string = g_strdup_printf("%s %s", strzone, strname); g_variant_builder_add (&builder, "s", settings_string); g_free (settings_string); + empty = FALSE; } } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); } - GVariant * locations = g_variant_builder_end (&builder); - g_settings_set_strv (conf, SETTINGS_LOCATIONS_S, g_variant_get_strv (locations, NULL)); - g_variant_unref (locations); + if (empty) { + /* Empty list */ + g_variant_builder_clear (&builder); + g_settings_set_strv (conf, SETTINGS_LOCATIONS_S, NULL); + } + else { + GVariant * locations = g_variant_builder_end (&builder); + g_settings_set_strv (conf, SETTINGS_LOCATIONS_S, g_variant_get_strv (locations, NULL)); + g_variant_unref (locations); + } } static gboolean -- cgit v1.2.3 From acfa619b0301301a733e820cdda8d9335a15b45f Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Thu, 24 Mar 2011 13:54:25 -0500 Subject: show location separator even if no locations (since we always have the current location --- src/datetime-service.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/datetime-service.c b/src/datetime-service.c index 65df77e..b166f3c 100644 --- a/src/datetime-service.c +++ b/src/datetime-service.c @@ -437,11 +437,11 @@ update_timezone_menu_items(gpointer user_data) { gboolean show = g_settings_get_boolean (conf, SETTINGS_SHOW_LOCATIONS_S); - if (len > 0) { - dbusmenu_menuitem_property_set_bool (locations_separator, DBUSMENU_MENUITEM_PROP_VISIBLE, show); - dbusmenu_menuitem_property_set_bool (current_location, DBUSMENU_MENUITEM_PROP_VISIBLE, show); - dbusmenu_menuitem_property_set_bool (current_location, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE); - } else { + dbusmenu_menuitem_property_set_bool (locations_separator, DBUSMENU_MENUITEM_PROP_VISIBLE, show); + dbusmenu_menuitem_property_set_bool (current_location, DBUSMENU_MENUITEM_PROP_VISIBLE, show); + dbusmenu_menuitem_property_set_bool (current_location, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE); + + if (len == 0) { g_debug("No locations configured (Empty List)"); return FALSE; } -- cgit v1.2.3 From b86cc25455f38c4162ecd1fe6add20373c789980 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Thu, 24 Mar 2011 16:22:52 -0400 Subject: fix memory leak that also prevented us noticing when the timezone got updated --- src/utils.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils.c b/src/utils.c index 537495b..d8851aa 100644 --- a/src/utils.c +++ b/src/utils.c @@ -233,6 +233,8 @@ generate_format_string_at_time (GDateTime * time) g_date_time_unref(future_bound); } + g_date_time_unref (now); + return generate_format_string_full(show_day, show_date); } -- cgit v1.2.3