]> git.wh0rd.org - fontconfig.git/commitdiff
fontconfig, at least as used by GIMP and/or PangoFT2 on Windows, crashes
authorTor Lillqvist <tml@iki.fi>
Sun, 1 Feb 2004 19:32:36 +0000 (19:32 +0000)
committerTor Lillqvist <tml@iki.fi>
Sun, 1 Feb 2004 19:32:36 +0000 (19:32 +0000)
    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.

ChangeLog
src/fccfg.c

index a3751e94565d9ca053c2d6336af47568e48985e4..332844d1884b353298c2ab095e49a2a84f211451 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * fc-lang/az_ir.orth:
index f393c79bf73fd6bdbabf51b11ed278e2195ae990..654977da01559cd77354bdc331065ada5b2d049c 100644 (file)
@@ -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;