[gnome-initial-setup] language: Fix critical when creating widget for Esperanto



commit 75cb20b63ac64c77fcb4f9bbd2ebfa33f850bdcf
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Tue May 23 23:56:12 2017 -0500

    language: Fix critical when creating widget for Esperanto
    
    It has no country code, and the language chooser is unprepared to
    handle this case. gnome_parse_locale can legitimately return success
    with a NULL country and we should handle that. Note this locale exists
    only in Debian, which has a bunch of glibc patches to add new locales,
    but apparently Debian is big and we should probably make it work
    properly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=783043

 .../pages/language/cc-language-chooser.c           |   26 ++++++++++++-------
 1 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/gnome-initial-setup/pages/language/cc-language-chooser.c 
b/gnome-initial-setup/pages/language/cc-language-chooser.c
index bcc27f3..ee28d7e 100644
--- a/gnome-initial-setup/pages/language/cc-language-chooser.c
+++ b/gnome-initial-setup/pages/language/cc-language-chooser.c
@@ -119,8 +119,10 @@ language_widget_new (const char *locale_id,
 {
        GtkWidget *label;
         gchar *locale_name, *locale_current_name, *locale_untranslated_name;
-        gchar *language, *language_name;
-        gchar *country, *country_name;
+        gchar *language = NULL;
+        gchar *language_name;
+        gchar *country = NULL;
+        gchar *country_name = NULL;
         gchar *sort_key;
         LanguageWidget *widget = g_new0 (LanguageWidget, 1);
 
@@ -128,7 +130,9 @@ language_widget_new (const char *locale_id,
                 return NULL;
 
         language_name = gnome_get_language_from_code (language, locale_id);
-        country_name = gnome_get_country_from_code (country, locale_id);
+
+        if (country)
+                country_name = gnome_get_country_from_code (country, locale_id);
 
         locale_name = gnome_get_language_from_locale (locale_id, locale_id);
         locale_current_name = gnome_get_language_from_locale (locale_id, NULL);
@@ -151,13 +155,15 @@ language_widget_new (const char *locale_id,
         gtk_box_pack_start (GTK_BOX (widget->box), widget->checkmark, FALSE, FALSE, 0);
         gtk_widget_show (widget->checkmark);
 
-        label = gtk_label_new (country_name);
-        gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
-        gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
-        gtk_style_context_add_class (gtk_widget_get_style_context (label), "dim-label");
-        gtk_label_set_xalign (GTK_LABEL (label), 0);
-        gtk_widget_set_halign (label, GTK_ALIGN_END);
-        gtk_box_pack_end (GTK_BOX (widget->box), label, FALSE, FALSE, 0);
+        if (country_name) {
+                label = gtk_label_new (country_name);
+                gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+                gtk_label_set_max_width_chars (GTK_LABEL (label), 30);
+                gtk_style_context_add_class (gtk_widget_get_style_context (label), "dim-label");
+                gtk_label_set_xalign (GTK_LABEL (label), 0);
+                gtk_widget_set_halign (label, GTK_ALIGN_END);
+                gtk_box_pack_end (GTK_BOX (widget->box), label, FALSE, FALSE, 0);
+        }
 
         widget->locale_id = g_strdup (locale_id);
         widget->locale_name = locale_name;


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