aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/fontconfig/fontconfig/0001-Revert-changes-made-to-FcConfigAppFontAddDir-recentl.patch
blob: f2fd5d473156af620035b5437118ad903bedc3ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
From 46ec6a52d4cc447cc3ff4a13b2067ecb76c9db2e Mon Sep 17 00:00:00 2001
From: Behdad Esfahbod <behdad@behdad.org>
Date: Fri, 26 Jun 2015 17:02:13 -0700
Subject: [PATCH] Revert changes made to FcConfigAppFontAddDir() recently

In 32ac7c75e8db0135ef37cf86f92d8b9be000c8bb the behavior of
FcConfigAppFontAddFile/Dir() were changed to return false
if not fonts were found.  While this is welldefined and useful
for AddFile(), it's quite problematic for AddDir().  For example,
if the directory is empty, is that a failure or success?  Worse,
the false value from AddDir() was being propagated all the way
to FcInit() returning false now.  This only happened upon memory
allocation failure before, and some clients assert that FcInit()
is successful.

With this change, AddDir() is reverted back to what it was.
AddFont() change (which was actually in fcdir.c) from the original
commit is left in.

Upstream-Status: backport

Signed-off-by: Li Zhou <li.zhou@windriver.com>
---
 doc/fcconfig.fncs |    2 +-
 src/fccfg.c       |   29 +++++++++++------------------
 src/fcint.h       |    3 ---
 src/fcstr.c       |    8 --------
 4 files changed, 12 insertions(+), 30 deletions(-)

Index: fontconfig-2.11.94/doc/fcconfig.fncs
===================================================================
--- fontconfig-2.11.94.orig/doc/fcconfig.fncs
+++ fontconfig-2.11.94/doc/fcconfig.fncs
@@ -232,7 +232,7 @@ the current configuration is used.
 @DESC@
 Scans the specified directory for fonts, adding each one found to the
 application-specific set of fonts. Returns FcFalse
-if the fonts cannot be added (due to allocation failure or no fonts found).
+if the fonts cannot be added (due to allocation failure).
 Otherwise returns FcTrue. If <parameter>config</parameter> is NULL,
 the current configuration is used.
 @@
Index: fontconfig-2.11.94/src/fccfg.c
===================================================================
--- fontconfig-2.11.94.orig/src/fccfg.c
+++ fontconfig-2.11.94/src/fccfg.c
@@ -368,7 +368,6 @@ FcConfigAddDirList (FcConfig *config, Fc
     FcStrList	    *dirlist;
     FcChar8	    *dir;
     FcCache	    *cache;
-    FcBool	     ret = FcFalse;
 
     dirlist = FcStrListCreate (dirSet);
     if (!dirlist)
@@ -383,10 +382,9 @@ FcConfigAddDirList (FcConfig *config, Fc
 	    continue;
 	FcConfigAddCache (config, cache, set, dirSet);
 	FcDirCacheUnload (cache);
-	ret = FcTrue;
     }
     FcStrListDone (dirlist);
-    return ret;
+    return FcTrue;
 }
 
 /*
@@ -2199,7 +2197,6 @@ FcConfigAppFontAddFile (FcConfig    *con
     FcStrSet	*subdirs;
     FcStrList	*sublist;
     FcChar8	*subdir;
-    FcBool	 ret = FcFalse;
 
     if (!config)
     {
@@ -2229,19 +2226,16 @@ FcConfigAppFontAddFile (FcConfig    *con
 	FcStrSetDestroy (subdirs);
 	return FcFalse;
     }
-    if (subdirs->num == 0)
-	ret = FcTrue;
-    else if ((sublist = FcStrListCreate (subdirs)))
+    if ((sublist = FcStrListCreate (subdirs)))
     {
 	while ((subdir = FcStrListNext (sublist)))
 	{
-	    if (FcConfigAppFontAddDir (config, subdir))
-		ret = FcTrue;
+	    FcConfigAppFontAddDir (config, subdir);
 	}
 	FcStrListDone (sublist);
     }
     FcStrSetDestroy (subdirs);
-    return ret;
+    return FcTrue;
 }
 
 FcBool
@@ -2250,7 +2244,6 @@ FcConfigAppFontAddDir (FcConfig	    *con
 {
     FcFontSet	*set;
     FcStrSet	*dirs;
-    FcBool	 ret = FcTrue;
 
     if (!config)
     {
@@ -2269,8 +2262,8 @@ FcConfigAppFontAddDir (FcConfig	    *con
 	set = FcFontSetCreate ();
 	if (!set)
 	{
-	    ret = FcFalse;
-	    goto bail;
+	    FcStrSetDestroy (dirs);
+	    return FcFalse;
 	}
 	FcConfigSetFonts (config, set, FcSetApplication);
     }
@@ -2278,10 +2271,12 @@ FcConfigAppFontAddDir (FcConfig	    *con
     FcStrSetAddFilename (dirs, dir);
 
     if (!FcConfigAddDirList (config, FcSetApplication, dirs))
-	ret = FcFalse;
-bail:
+    {
+	FcStrSetDestroy (dirs);
+	return FcFalse;
+    }
     FcStrSetDestroy (dirs);
-    return ret;
+    return FcTrue;
 }
 
 void