]> git.wh0rd.org - fontconfig.git/blobdiff - src/fccharset.c
Skip broken caches. Cache files are auto-written, don't rewrite in fc-cache.
[fontconfig.git] / src / fccharset.c
index 96dcbe7169e4c545e2f24ecf06631703f3e50c61..3a93c4a96cec00723e6a696a817f3530a2803507 100644 (file)
@@ -1297,32 +1297,40 @@ FcCharSetSerialize(FcSerialize *serialize, const FcCharSet *cs)
     cs_serialized->ref = FC_REF_CONSTANT;
     cs_serialized->num = cs->num;
 
-    leaves = FcCharSetLeaves (cs);
-    leaves_serialized = FcSerializePtr (serialize, leaves);
-    if (!leaves_serialized)
-       return NULL;
-
-    cs_serialized->leaves_offset = FcPtrToOffset (cs_serialized,
-                                                 leaves_serialized);
-    
-    numbers = FcCharSetNumbers (cs);
-    numbers_serialized = FcSerializePtr (serialize, numbers);
-    if (!numbers)
-       return NULL;
-
-    cs_serialized->numbers_offset = FcPtrToOffset (cs_serialized,
-                                                  numbers_serialized);
-
-    for (i = 0; i < cs->num; i++)
+    if (cs->num)
     {
-       leaf = FcCharSetLeaf (cs, i);
-       leaf_serialized = FcSerializePtr (serialize, leaf);
-       if (!leaf_serialized)
+       leaves = FcCharSetLeaves (cs);
+       leaves_serialized = FcSerializePtr (serialize, leaves);
+       if (!leaves_serialized)
+           return NULL;
+    
+       cs_serialized->leaves_offset = FcPtrToOffset (cs_serialized,
+                                                     leaves_serialized);
+       
+       numbers = FcCharSetNumbers (cs);
+       numbers_serialized = FcSerializePtr (serialize, numbers);
+       if (!numbers)
            return NULL;
-       *leaf_serialized = *leaf;
-       leaves_serialized[i] = FcPtrToOffset (leaves_serialized, 
-                                             leaf_serialized);
-       numbers_serialized[i] = numbers[i];
+    
+       cs_serialized->numbers_offset = FcPtrToOffset (cs_serialized,
+                                                      numbers_serialized);
+    
+       for (i = 0; i < cs->num; i++)
+       {
+           leaf = FcCharSetLeaf (cs, i);
+           leaf_serialized = FcSerializePtr (serialize, leaf);
+           if (!leaf_serialized)
+               return NULL;
+           *leaf_serialized = *leaf;
+           leaves_serialized[i] = FcPtrToOffset (leaves_serialized, 
+                                                 leaf_serialized);
+           numbers_serialized[i] = numbers[i];
+       }
+    }
+    else
+    {
+       cs_serialized->leaves_offset = 0;
+       cs_serialized->numbers_offset = 0;
     }
     
     return cs_serialized;