]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcfs.c
Detect and use available random number generator (bug 8308)
[fontconfig.git] / src / fcfs.c
index c2020402e663093d1b8fbb8764e05e445c8f907a..7bea73651c5ee6ab01c1a57165b6ec0897569455 100644 (file)
@@ -22,8 +22,8 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <stdlib.h>
 #include "fcint.h"
+#include <stdlib.h>
 
 FcFontSet *
 FcFontSetCreate (void)
@@ -82,37 +82,54 @@ FcFontSetAdd (FcFontSet *s, FcPattern *font)
 }
 
 FcBool
-FcFontSetPrepareSerialize (FcFontSet *s)
+FcFontSetSerializeAlloc (FcSerialize *serialize, const FcFontSet *s)
 {
     int i;
-
+    
+    if (!FcSerializeAlloc (serialize, s, sizeof (FcFontSet)))
+       return FcFalse;
+    if (!FcSerializeAlloc (serialize, s->fonts, s->nfont * sizeof (FcPattern *)))
+       return FcFalse;
     for (i = 0; i < s->nfont; i++)
-       if (!FcPatternPrepareSerialize(s->fonts[i]))
+    {
+       if (!FcPatternSerializeAlloc (serialize, s->fonts[i]))
            return FcFalse;
-
+    }
     return FcTrue;
 }
 
-FcBool
-FcFontSetSerialize (FcFontSet * s)
+FcFontSet *
+FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s)
 {
-    int i;
-    FcPattern * p;
+    int                i;
+    FcFontSet  *s_serialize;
+    FcPattern  **fonts_serialize;
+    FcPattern  *p_serialize;
+
+    s_serialize = FcSerializePtr (serialize, s);
+    if (!s_serialize)
+       return NULL;
+    *s_serialize = *s;
+    s_serialize->sfont = s_serialize->nfont;
+    
+    fonts_serialize = FcSerializePtr (serialize, s->fonts);
+    if (!fonts_serialize)
+       return NULL;
+    s_serialize->fonts = FcPtrToEncodedOffset (s_serialize,
+                                              fonts_serialize, FcPattern *);
 
     for (i = 0; i < s->nfont; i++)
     {
-       p = FcPatternSerialize (s->fonts[i]);
-       if (!p) return FcFalse;
-       FcPatternDestroy (s->fonts[i]);
-
-       s->fonts[i] = p;
+       p_serialize = FcPatternSerialize (serialize, s->fonts[i]);
+       if (!p_serialize)
+           return NULL;
+       fonts_serialize[i] = FcPtrToEncodedOffset (s_serialize,
+                                                  p_serialize,
+                                                  FcPattern);
     }
 
-    return FcTrue;
-}
-
-void
-FcFontSetClearStatic (void)
-{
-    FcPatternClearStatic();
+    return s_serialize;
 }
+#define __fcfs__
+#include "fcaliastail.h"
+#undef __fcfs__