forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
media-libs/fontconfig: Do not call setlocale in the library.
Patch from upstream. https://bugs.freedesktop.org/show_bug.cgi?id=105492 Closes: https://bugs.gentoo.org/650332 Package-Manager: Portage-2.3.24, Repoman-2.3.6
- Loading branch information
Showing
2 changed files
with
170 additions
and
30 deletions.
There are no files selected for viewing
200 changes: 170 additions & 30 deletions
200
media-libs/fontconfig/files/fontconfig-2.13.0-locale.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,177 @@ | ||
https://bugs.gentoo.org/650332 | ||
Do not set locale in the library. | ||
Patch from upstream. | ||
|
||
From 923b5be626a6e03fbaeee0b5cd6d0246c2f8f36f Mon Sep 17 00:00:00 2001 | ||
From: Akira TAGOH <[email protected]> | ||
Date: Wed, 14 Mar 2018 12:35:05 +0900 | ||
Subject: [PATCH] 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/fc-cache/fc-cache.c | ||
+++ b/fc-cache/fc-cache.c | ||
@@ -41,6 +41,7 @@ | ||
#include <fcntl.h> | ||
#include <dirent.h> | ||
#include <string.h> | ||
+#include <locale.h> | ||
|
||
#if defined (_WIN32) | ||
#define STRICT | ||
@@ -302,6 +303,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "Efrsy:Vvh", longopts, NULL)) != -1) | ||
#else | ||
--- a/fc-cat/fc-cat.c | ||
+++ b/fc-cat/fc-cat.c | ||
@@ -40,6 +40,7 @@ | ||
#include <sys/types.h> | ||
#include <sys/stat.h> | ||
#include <errno.h> | ||
+#include <locale.h> | ||
|
||
#ifdef ENABLE_NLS | ||
#include <libintl.h> | ||
@@ -271,6 +272,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "Vvrh", longopts, NULL)) != -1) | ||
#else | ||
--- 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 @@ | ||
#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 | ||
--- a/fc-list/fc-list.c | ||
+++ b/fc-list/fc-list.c | ||
@@ -27,6 +27,7 @@ | ||
#include <unistd.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
+#include <locale.h> | ||
#ifdef HAVE_CONFIG_H | ||
#include <config.h> | ||
#else | ||
@@ -117,6 +118,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "vbf:qVh", longopts, NULL)) != -1) | ||
#else | ||
--- a/fc-match/fc-match.c | ||
+++ b/fc-match/fc-match.c | ||
@@ -36,6 +36,7 @@ | ||
#include <unistd.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
+#include <locale.h> | ||
|
||
#ifdef ENABLE_NLS | ||
#include <libintl.h> | ||
@@ -121,6 +122,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "asvbf:Vh", longopts, NULL)) != -1) | ||
#else | ||
--- a/fc-pattern/fc-pattern.c | ||
+++ b/fc-pattern/fc-pattern.c | ||
@@ -36,6 +36,7 @@ | ||
#include <unistd.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
+#include <locale.h> | ||
|
||
#ifdef ENABLE_NLS | ||
#include <libintl.h> | ||
@@ -111,6 +112,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "cdf:Vh", longopts, NULL)) != -1) | ||
#else | ||
--- a/fc-query/fc-query.c | ||
+++ b/fc-query/fc-query.c | ||
@@ -39,6 +39,7 @@ | ||
#include <unistd.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
+#include <locale.h> | ||
|
||
#ifdef ENABLE_NLS | ||
#include <libintl.h> | ||
@@ -115,6 +116,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "i:bf:Vh", longopts, NULL)) != -1) | ||
#else | ||
--- a/fc-scan/fc-scan.c | ||
+++ b/fc-scan/fc-scan.c | ||
@@ -39,6 +39,7 @@ | ||
#include <unistd.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
+#include <locale.h> | ||
|
||
#ifdef ENABLE_NLS | ||
#include <libintl.h> | ||
@@ -110,6 +111,7 @@ | ||
#if HAVE_GETOPT_LONG || HAVE_GETOPT | ||
int c; | ||
|
||
+ setlocale (LC_ALL, ""); | ||
#if HAVE_GETOPT_LONG | ||
while ((c = getopt_long (argc, argv, "bf:Vh", longopts, NULL)) != -1) | ||
#else | ||
--- 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; | ||
@@ -26,7 +26,6 @@ | ||
|
||
#include "fcint.h" | ||
#include <dirent.h> | ||
-#include <locale.h> | ||
#include <sys/types.h> | ||
|
||
#if defined (_WIN32) && !defined (R_OK) | ||
@@ -39,18 +38,6 @@ | ||
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) | ||
- { | ||
- 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); | ||
-- | ||
2.16.2 | ||
|
||
if (!config) |
File renamed without changes.