[Fontconfig] fontconfig: Branch 'master'

Akira TAGOH tagoh at kemper.freedesktop.org
Mon Jun 11 07:04:03 UTC 2018


 src/fccfg.c |   42 ++++++++++++++++++++++++++++++++++++------
 1 file changed, 36 insertions(+), 6 deletions(-)

New commits:
commit 096e8019be595c2224aaabf98da630ee917ee51c
Author: Tom Anderson <thomasanderson at chromium.org>
Date:   Fri Jun 8 12:31:15 2018 -0700

    Fix CFI builds
    
    CFI [1] is a dynamic analysis tool that checks types at runtime.  It reports an
    error when using a function with signature eg. (void (*)(char*)) as
    (void (*)(void*)).  This change adds some wrapper functions to avoid this issue.
    In optimized builds, the functions should get optimized away.
    
    [1] https://clang.llvm.org/docs/ControlFlowIntegrity.html

diff --git a/src/fccfg.c b/src/fccfg.c
index f9fc99a..3d5c335 100644
--- a/src/fccfg.c
+++ b/src/fccfg.c
@@ -52,6 +52,36 @@ retry:
     return config;
 }
 
+static FcChar32
+FcHashAsStrIgnoreCase (const void *data)
+{
+    return FcStrHashIgnoreCase (data);
+}
+
+static int
+FcCompareAsStr (const void *v1, const void *v2)
+{
+    return FcStrCmp (v1, v2);
+}
+
+static void
+FcDestroyAsRule (void *data)
+{
+    FcRuleDestroy (data);
+}
+
+static void
+FcDestroyAsRuleSet (void *data)
+{
+    FcRuleSetDestroy (data);
+}
+
+static void
+FcDestroyAsStr (void *data)
+{
+    FcStrFree (data);
+}
+
 FcBool
 FcConfigInit (void)
 {
@@ -113,7 +143,7 @@ FcConfigCreate (void)
 
     for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++)
     {
-	config->subst[k] = FcPtrListCreate ((FcDestroyFunc) FcRuleSetDestroy);
+	config->subst[k] = FcPtrListCreate (FcDestroyAsRuleSet);
 	if (!config->subst[k])
 	    err = FcTrue;
     }
@@ -131,18 +161,18 @@ FcConfigCreate (void)
 
     config->sysRoot = NULL;
 
-    config->rulesetList = FcPtrListCreate ((FcDestroyFunc) FcRuleSetDestroy);
+    config->rulesetList = FcPtrListCreate (FcDestroyAsRuleSet);
     if (!config->rulesetList)
 	goto bail9;
     config->availConfigFiles = FcStrSetCreate ();
     if (!config->availConfigFiles)
 	goto bail10;
 
-    config->uuid_table = FcHashTableCreate ((FcHashFunc) FcStrHashIgnoreCase,
-					    (FcCompareFunc) FcStrCmp,
+    config->uuid_table = FcHashTableCreate (FcHashAsStrIgnoreCase,
+					    FcCompareAsStr,
 					    FcHashStrCopy,
 					    FcHashUuidCopy,
-					    (FcDestroyFunc) FcStrFree,
+					    FcDestroyAsStr,
 					    FcHashUuidFree);
 
     FcRefInit (&config->ref, 1);
@@ -2491,7 +2521,7 @@ FcRuleSetCreate (const FcChar8 *name)
 	ret->description = NULL;
 	ret->domain = NULL;
 	for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++)
-	    ret->subst[k] = FcPtrListCreate ((FcDestroyFunc) FcRuleDestroy);
+	    ret->subst[k] = FcPtrListCreate (FcDestroyAsRule);
 	FcRefInit (&ret->ref, 1);
     }
 


More information about the Fontconfig mailing list