| 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 |