aboutsummaryrefslogtreecommitdiffstats
path: root/main/fontconfig/locale.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/fontconfig/locale.patch')
-rw-r--r--main/fontconfig/locale.patch116
1 files changed, 116 insertions, 0 deletions
diff --git a/main/fontconfig/locale.patch b/main/fontconfig/locale.patch
new file mode 100644
index 0000000000..327f6b35ba
--- /dev/null
+++ b/main/fontconfig/locale.patch
@@ -0,0 +1,116 @@
+From 923b5be626a6e03fbaeee0b5cd6d0246c2f8f36f Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Wed, 14 Mar 2018 12:35:05 +0900
+Subject: Do not override locale if already set by app
+
+https://bugs.freedesktop.org/show_bug.cgi?id=105492
+---
+ src/fccfg.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/fccfg.c b/src/fccfg.c
+index eb0b76d..e311f17 100644
+--- a/src/fccfg.c
++++ b/src/fccfg.c
+@@ -45,11 +45,16 @@ retry_locale:
+ is_locale_initialized = (intptr_t) fc_atomic_ptr_get (&static_is_locale_initialized);
+ if (!is_locale_initialized)
+ {
++ char *loc;
++
+ is_locale_initialized = FcTrue;
+ if (!fc_atomic_ptr_cmpexch (&static_is_locale_initialized, NULL,
+ (void *)(intptr_t) is_locale_initialized))
+ goto retry_locale;
+- setlocale (LC_ALL, "");
++
++ loc = setlocale (LC_ALL, NULL);
++ if (!loc || strcmp (loc, "C") == 0)
++ setlocale (LC_ALL, "");
+ }
+ retry_config:
+ config = fc_atomic_ptr_get (&_fcConfig);
+--
+cgit v1.1
+
+From 98eaef69af1350e459bf9c175476d3b772968874 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Thu, 15 Mar 2018 12:17:52 +0900
+Subject: Leave the locale setting to applications
+
+https://bugs.freedesktop.org/show_bug.cgi?id=105492
+---
+ fc-conflist/fc-conflist.c | 2 ++
+ src/fccfg.c | 22 ++--------------------
+ 2 files changed, 4 insertions(+), 20 deletions(-)
+
+diff --git a/fc-conflist/fc-conflist.c b/fc-conflist/fc-conflist.c
+index d02273b..5c40a0f 100644
+--- a/fc-conflist/fc-conflist.c
++++ b/fc-conflist/fc-conflist.c
+@@ -38,6 +38,7 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <locale.h>
+
+ #ifdef ENABLE_NLS
+ #include <libintl.h>
+@@ -102,6 +103,7 @@ main (int argc, char **argv)
+ #if HAVE_GETOPT_LONG || HAVE_GETOPT
+ int c;
+
++ setlocale (LC_ALL, "");
+ #if HAVE_GETOPT_LONG
+ while ((c = getopt_long (argc, argv, "Vh", longopts, NULL)) != -1)
+ #else
+diff --git a/src/fccfg.c b/src/fccfg.c
+index e311f17..e35c451 100644
+--- a/src/fccfg.c
++++ b/src/fccfg.c
+@@ -26,7 +26,6 @@
+
+ #include "fcint.h"
+ #include <dirent.h>
+-#include <locale.h>
+ #include <sys/types.h>
+
+ #if defined (_WIN32) && !defined (R_OK)
+@@ -39,24 +38,7 @@ static FcConfig *
+ FcConfigEnsure (void)
+ {
+ FcConfig *config;
+- FcBool is_locale_initialized;
+- static void *static_is_locale_initialized;
+-retry_locale:
+- is_locale_initialized = (intptr_t) fc_atomic_ptr_get (&static_is_locale_initialized);
+- if (!is_locale_initialized)
+- {
+- char *loc;
+-
+- is_locale_initialized = FcTrue;
+- if (!fc_atomic_ptr_cmpexch (&static_is_locale_initialized, NULL,
+- (void *)(intptr_t) is_locale_initialized))
+- goto retry_locale;
+-
+- loc = setlocale (LC_ALL, NULL);
+- if (!loc || strcmp (loc, "C") == 0)
+- setlocale (LC_ALL, "");
+- }
+-retry_config:
++retry:
+ config = fc_atomic_ptr_get (&_fcConfig);
+ if (!config)
+ {
+@@ -64,7 +46,7 @@ retry_config:
+
+ if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) {
+ FcConfigDestroy (config);
+- goto retry_config;
++ goto retry;
+ }
+ }
+ return config;
+--
+cgit v1.1
+