From: Tor Lillqvist Date: Sun, 1 Feb 2004 19:32:36 +0000 (+0000) Subject: fontconfig, at least as used by GIMP and/or PangoFT2 on Windows, crashes X-Git-Tag: fc-2_2_93~7 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=f4c52909ab5321df608fe7af2da3edcab48818d9;p=fontconfig.git fontconfig, at least as used by GIMP and/or PangoFT2 on Windows, crashes when trying to save the cache if config->cache is NULL, which happens if FcConfigHome() is NULL. Guard against that by using the temp folder in that case. --- diff --git a/ChangeLog b/ChangeLog index a3751e9..332844d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-02-01 Tor Lillqvist + + * src/fccfg.c (FcConfigCreate): fontconfig, at least as used by + GIMP and/or PangoFT2 on Windows, crashes when trying to save the + cache if config->cache is NULL, which happens if FcConfigHome() is + NULL. Guard against that by using the temp folder in that case. + 2004-01-03 Roozbeh Pournader * fc-lang/az_ir.orth: diff --git a/src/fccfg.c b/src/fccfg.c index f393c79..654977d 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -72,6 +72,31 @@ FcConfigCreate (void) if (!FcConfigSetCache (config, (FcChar8 *) ("~/" FC_USER_CACHE_FILE))) goto bail6; +#ifdef _WIN32 + if (config->cache == 0) + { + /* If no home, use the temp folder. */ + FcChar8 dummy[1]; + int templen = GetTempPath (1, dummy); + FcChar8 *temp = malloc (templen + 1); + + if (temp) + { + FcChar8 *cache_dir; + + GetTempPath (templen + 1, temp); + cache_dir = FcStrPlus (temp, FC_USER_CACHE_FILE); + free (temp); + if (!FcConfigSetCache (config, cache_dir)) + { + FcStrFree (cache_dir); + goto bail6; + } + FcStrFree (cache_dir); + } + } +#endif + config->blanks = 0; config->substPattern = 0;