[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