From 879266d2cd8fadd26d70d9016d5e1d4fc420f639 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Wed, 15 Nov 2023 18:17:49 +0100 Subject: [PATCH] Ensure the stemmer fully loads the init locale once Since stemmer->current_lang is initialized before calling as_stemmer_reload, this first call to as_stemmer_reload is avoided. So, the stemmer has not been reloaded after the initialization finishes. This modification initializes stemmer->current_lang to NULL explicitely, but then the call to as_stemmer_reload makes sure the field is non-NULL at the end of the initialization function. --- src/as-stemmer.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/as-stemmer.c b/src/as-stemmer.c index 63d452677..74aad7b71 100644 --- a/src/as-stemmer.c +++ b/src/as-stemmer.c @@ -76,9 +76,9 @@ as_stemmer_init (AsStemmer *stemmer) /* we don't use the locale in XML, so it can be POSIX */ locale = as_get_current_locale_posix (); - stemmer->current_lang = as_utils_locale_to_language (locale); - as_stemmer_reload (stemmer, stemmer->current_lang); + stemmer->current_lang = NULL; + as_stemmer_reload (stemmer, locale); #endif } @@ -99,7 +99,8 @@ as_stemmer_reload (AsStemmer *stemmer, const gchar *locale) /* check if we need to reload */ lang = as_utils_locale_to_language (locale); locker = g_mutex_locker_new (&stemmer->mutex); - if (as_str_equal0 (lang, stemmer->current_lang)) { + if (stemmer->current_lang != NULL + && as_str_equal0 (lang, stemmer->current_lang)) { g_mutex_locker_free (locker); return; }