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.
This commit is contained in:
Tor Lillqvist 2004-02-01 19:32:36 +00:00
parent d3481737be
commit f4c52909ab
2 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2004-02-01 Tor Lillqvist <tml@iki.fi>
* 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 <roozbeh@sharif.edu> 2004-01-03 Roozbeh Pournader <roozbeh@sharif.edu>
* fc-lang/az_ir.orth: * fc-lang/az_ir.orth:

View File

@ -72,6 +72,31 @@ FcConfigCreate (void)
if (!FcConfigSetCache (config, (FcChar8 *) ("~/" FC_USER_CACHE_FILE))) if (!FcConfigSetCache (config, (FcChar8 *) ("~/" FC_USER_CACHE_FILE)))
goto bail6; 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->blanks = 0;
config->substPattern = 0; config->substPattern = 0;