[gtk/wip/chergert/spellcheck] avoid reentrancy



commit f80b953a0f4b40ce93904819f05cbead1c60f7ef
Author: Christian Hergert <chergert redhat com>
Date:   Fri Mar 12 07:42:56 2021 -0800

    avoid reentrancy

 gtk/gtkspellchecker.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkspellchecker.c b/gtk/gtkspellchecker.c
index bf9bd69316..60fd2881ec 100644
--- a/gtk/gtkspellchecker.c
+++ b/gtk/gtkspellchecker.c
@@ -161,7 +161,15 @@ gtk_spell_checker_get_default (void)
   static GtkSpellChecker *checker;
 
   if (checker == NULL)
-    checker = gtk_spell_checker_new_for_languages (_gtk_spell_language_get_defaults ());
+    {
+      static const char *fallbacks[] = { "en_US", "C", NULL };
+      const char * const *defaults = _gtk_spell_language_get_defaults ();
+
+      if (defaults == NULL || defaults[0] == NULL)
+        defaults = fallbacks;
+
+      checker = gtk_spell_checker_new_for_languages (defaults);
+    }
 
   return checker;
 }
@@ -184,9 +192,6 @@ gtk_spell_checker_get_default (void)
 GtkSpellChecker *
 gtk_spell_checker_new_for_languages (const char * const *languages)
 {
-  if (languages == NULL || languages[0] == NULL)
-    return g_object_ref (gtk_spell_checker_get_default ());
-
   return g_object_new (GTK_TYPE_SPELL_CHECKER,
                        "languages", languages,
                        NULL);
@@ -208,6 +213,5 @@ GtkSpellChecker *
 gtk_spell_checker_new_for_language (const char *language)
 {
   const char *languages[] = { language, NULL };
-
   return gtk_spell_checker_new_for_languages (languages);
 }


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