blob: f2fd5d473156af620035b5437118ad903bedc3ac [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001From 46ec6a52d4cc447cc3ff4a13b2067ecb76c9db2e Mon Sep 17 00:00:00 2001
2From: Behdad Esfahbod <behdad@behdad.org>
3Date: Fri, 26 Jun 2015 17:02:13 -0700
4Subject: [PATCH] Revert changes made to FcConfigAppFontAddDir() recently
5
6In 32ac7c75e8db0135ef37cf86f92d8b9be000c8bb the behavior of
7FcConfigAppFontAddFile/Dir() were changed to return false
8if not fonts were found. While this is welldefined and useful
9for AddFile(), it's quite problematic for AddDir(). For example,
10if the directory is empty, is that a failure or success? Worse,
11the false value from AddDir() was being propagated all the way
12to FcInit() returning false now. This only happened upon memory
13allocation failure before, and some clients assert that FcInit()
14is successful.
15
16With this change, AddDir() is reverted back to what it was.
17AddFont() change (which was actually in fcdir.c) from the original
18commit is left in.
19
20Upstream-Status: backport
21
22Signed-off-by: Li Zhou <li.zhou@windriver.com>
23---
24 doc/fcconfig.fncs | 2 +-
25 src/fccfg.c | 29 +++++++++++------------------
26 src/fcint.h | 3 ---
27 src/fcstr.c | 8 --------
28 4 files changed, 12 insertions(+), 30 deletions(-)
29
30Index: fontconfig-2.11.94/doc/fcconfig.fncs
31===================================================================
32--- fontconfig-2.11.94.orig/doc/fcconfig.fncs
33+++ fontconfig-2.11.94/doc/fcconfig.fncs
34@@ -232,7 +232,7 @@ the current configuration is used.
35 @DESC@
36 Scans the specified directory for fonts, adding each one found to the
37 application-specific set of fonts. Returns FcFalse
38-if the fonts cannot be added (due to allocation failure or no fonts found).
39+if the fonts cannot be added (due to allocation failure).
40 Otherwise returns FcTrue. If <parameter>config</parameter> is NULL,
41 the current configuration is used.
42 @@
43Index: fontconfig-2.11.94/src/fccfg.c
44===================================================================
45--- fontconfig-2.11.94.orig/src/fccfg.c
46+++ fontconfig-2.11.94/src/fccfg.c
47@@ -368,7 +368,6 @@ FcConfigAddDirList (FcConfig *config, Fc
48 FcStrList *dirlist;
49 FcChar8 *dir;
50 FcCache *cache;
51- FcBool ret = FcFalse;
52
53 dirlist = FcStrListCreate (dirSet);
54 if (!dirlist)
55@@ -383,10 +382,9 @@ FcConfigAddDirList (FcConfig *config, Fc
56 continue;
57 FcConfigAddCache (config, cache, set, dirSet);
58 FcDirCacheUnload (cache);
59- ret = FcTrue;
60 }
61 FcStrListDone (dirlist);
62- return ret;
63+ return FcTrue;
64 }
65
66 /*
67@@ -2199,7 +2197,6 @@ FcConfigAppFontAddFile (FcConfig *con
68 FcStrSet *subdirs;
69 FcStrList *sublist;
70 FcChar8 *subdir;
71- FcBool ret = FcFalse;
72
73 if (!config)
74 {
75@@ -2229,19 +2226,16 @@ FcConfigAppFontAddFile (FcConfig *con
76 FcStrSetDestroy (subdirs);
77 return FcFalse;
78 }
79- if (subdirs->num == 0)
80- ret = FcTrue;
81- else if ((sublist = FcStrListCreate (subdirs)))
82+ if ((sublist = FcStrListCreate (subdirs)))
83 {
84 while ((subdir = FcStrListNext (sublist)))
85 {
86- if (FcConfigAppFontAddDir (config, subdir))
87- ret = FcTrue;
88+ FcConfigAppFontAddDir (config, subdir);
89 }
90 FcStrListDone (sublist);
91 }
92 FcStrSetDestroy (subdirs);
93- return ret;
94+ return FcTrue;
95 }
96
97 FcBool
98@@ -2250,7 +2244,6 @@ FcConfigAppFontAddDir (FcConfig *con
99 {
100 FcFontSet *set;
101 FcStrSet *dirs;
102- FcBool ret = FcTrue;
103
104 if (!config)
105 {
106@@ -2269,8 +2262,8 @@ FcConfigAppFontAddDir (FcConfig *con
107 set = FcFontSetCreate ();
108 if (!set)
109 {
110- ret = FcFalse;
111- goto bail;
112+ FcStrSetDestroy (dirs);
113+ return FcFalse;
114 }
115 FcConfigSetFonts (config, set, FcSetApplication);
116 }
117@@ -2278,10 +2271,12 @@ FcConfigAppFontAddDir (FcConfig *con
118 FcStrSetAddFilename (dirs, dir);
119
120 if (!FcConfigAddDirList (config, FcSetApplication, dirs))
121- ret = FcFalse;
122-bail:
123+ {
124+ FcStrSetDestroy (dirs);
125+ return FcFalse;
126+ }
127 FcStrSetDestroy (dirs);
128- return ret;
129+ return FcTrue;
130 }
131
132 void