]> git.wh0rd.org - fontconfig.git/blobdiff - src/fccfg.c
Replace FcObjectStaticName by FcStrStaticName. Implement serialization of
[fontconfig.git] / src / fccfg.c
index aaa05f56b47341ca34a3fb07eb0faaa7c1778f5f..0032a9bbf62d52aeca6aa86287dbad50eafd60f6 100644 (file)
@@ -252,24 +252,18 @@ FcConfigBuildFonts (FcConfig *config)
     FcStrList      *list;
     FcChar8        *dir;
 
-#if 0
-    if (config->cache)
-       FcGlobalCacheLoad (cache, config->cache);
-#endif
-    if (config->fonts[FcSetSystem])
-       return FcTrue;
-
     fonts = FcFontSetCreate ();
     if (!fonts)
        goto bail0;
-
-#if 0
+    
     cache = FcGlobalCacheCreate ();
     if (!cache)
        goto bail1;
-#endif
 
-    cached_fonts = FcCacheRead(config);
+    if (config->cache)
+       FcGlobalCacheLoad (cache, config->cache);
+
+    cached_fonts = FcCacheRead(config, cache);
     if (!cached_fonts)
     {
        list = FcConfigGetFontDirs (config);
@@ -294,18 +288,19 @@ FcConfigBuildFonts (FcConfig *config)
        {
            if (FcConfigAcceptFont (config, cached_fonts->fonts[i]))
                FcFontSetAdd (fonts, cached_fonts->fonts[i]);
+
+           cached_fonts->fonts[i] = 0; /* prevent free in FcFontSetDestroy */
        }
+       cached_fonts->nfont = 0;
        FcFontSetDestroy (cached_fonts);
     }
     
     if (FcDebug () & FC_DBG_FONTSET)
        FcFontSetPrint (fonts);
 
-#if 0
     if (config->cache)
        FcGlobalCacheSave (cache, config->cache);
     FcGlobalCacheDestroy (cache);
-#endif
 
     FcConfigSetFonts (config, fonts, FcSetSystem);
     
@@ -778,7 +773,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
        break;
     case FcOpString:
        v.type = FcTypeString;
-       v.u.s = FcObjectStaticName(e->u.sval);
+       v.u.s = FcStrStaticName(e->u.sval);
        v = FcValueSave (v);
        break;
     case FcOpMatrix:
@@ -896,7 +891,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
                switch (e->op) {
                case FcOpPlus:
                    v.type = FcTypeString;
-                   v.u.s = FcObjectStaticName (FcStrPlus (vl.u.s, vr.u.s));
+                   v.u.s = FcStrStaticName (FcStrPlus (vl.u.s, vr.u.s));
                         
                    if (!v.u.s)
                        v.type = FcTypeVoid;