util: Use (thread-safe) uselocale()
Our helper method to translate a string according to the LC_TIME setting uses the no-thread-safe setlocale(). While that's not an issue in practice given that all JS code shares a single thread, I was pointed to a better alternative when adopting the same handling in gnome-desktop's wallclock[0]. [0] https://gitlab.gnome.org/GNOME/gnome-desktop/merge_requests/17 https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/292
This commit is contained in:
parent
e92477a752
commit
f4a64f77f2
@ -235,14 +235,21 @@ shell_util_translate_time_string (const char *str)
|
||||
const char *locale = g_getenv ("LC_TIME");
|
||||
const char *res;
|
||||
char *sep;
|
||||
locale_t old_loc;
|
||||
locale_t loc = (locale_t) 0;
|
||||
|
||||
if (locale)
|
||||
setlocale (LC_MESSAGES, locale);
|
||||
loc = newlocale (LC_MESSAGES_MASK, locale, (locale_t) 0);
|
||||
|
||||
old_loc = uselocale (loc);
|
||||
|
||||
sep = strchr (str, '\004');
|
||||
res = g_dpgettext (NULL, str, sep ? sep - str + 1 : 0);
|
||||
|
||||
setlocale (LC_MESSAGES, "");
|
||||
uselocale (old_loc);
|
||||
|
||||
if (loc != (locale_t) 0)
|
||||
freelocale (loc);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user