aboutsummaryrefslogtreecommitdiff
path: root/fontconfig/src/fccfg.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-09-02 09:05:37 +0200
committermarha <marha@users.sourceforge.net>2013-09-02 09:05:37 +0200
commit9e382b6be0e81397f18ec0b733a2e88dc3465a33 (patch)
treea192d9a8a7362c6396ddfba9f7d51ae826fc1844 /fontconfig/src/fccfg.c
parent5ebbc3a366287b631775ed3e17537580d380db8a (diff)
downloadvcxsrv-9e382b6be0e81397f18ec0b733a2e88dc3465a33.tar.gz
vcxsrv-9e382b6be0e81397f18ec0b733a2e88dc3465a33.tar.bz2
vcxsrv-9e382b6be0e81397f18ec0b733a2e88dc3465a33.zip
fontconfig libX11 mesa pixman git update 2 Sep 2013
libX11 commit 215ce6a67863de7acfd6dd3562b4fd97ef87b411 pixman commit 02906e57bd801e20b3094ca348fad563c6b5a922 fontconfig commit d2bb1a8381ba50dce79a487cd82087ca57fdcb68 mesa commit da33347131ff88a3b7979aea2031ce6f34319ed0
Diffstat (limited to 'fontconfig/src/fccfg.c')
-rw-r--r--fontconfig/src/fccfg.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/fontconfig/src/fccfg.c b/fontconfig/src/fccfg.c
index b88095bc6..6377fd7c6 100644
--- a/fontconfig/src/fccfg.c
+++ b/fontconfig/src/fccfg.c
@@ -1500,6 +1500,7 @@ FcConfigSubstituteWithPat (FcConfig *config,
FcPatternElt **elt = NULL, *e;
int i, nobjs;
FcBool retval = FcTrue;
+ FcTest **tst = NULL;
if (!config)
{
@@ -1557,6 +1558,12 @@ FcConfigSubstituteWithPat (FcConfig *config,
retval = FcFalse;
goto bail1;
}
+ tst = (FcTest **) malloc (SIZEOF_VOID_P * nobjs);
+ if (!tst)
+ {
+ retval = FcFalse;
+ goto bail1;
+ }
if (FcDebug () & FC_DBG_EDIT)
{
@@ -1570,6 +1577,7 @@ FcConfigSubstituteWithPat (FcConfig *config,
{
elt[i] = NULL;
value[i] = NULL;
+ tst[i] = NULL;
}
for (; r; r = r->next)
{
@@ -1598,7 +1606,10 @@ FcConfigSubstituteWithPat (FcConfig *config,
e = NULL;
/* different 'kind' won't be the target of edit */
if (!elt[object] && kind == r->u.test->kind)
+ {
elt[object] = e;
+ tst[object] = r->u.test;
+ }
/*
* If there's no such field in the font,
* then FcQualAll matches while FcQualAny does not
@@ -1646,6 +1657,8 @@ FcConfigSubstituteWithPat (FcConfig *config,
* Evaluate the list of expressions
*/
l = FcConfigValues (p, p_pat,kind, r->u.edit->expr, r->u.edit->binding);
+ if (tst[object] && (tst[object]->kind == FcMatchFont || kind == FcMatchPattern))
+ elt[object] = FcPatternObjectFindElt (p, tst[object]->object);
switch (FC_OP_GET_OP (r->u.edit->op)) {
case FcOpAssign:
@@ -1748,6 +1761,8 @@ bail1:
free (elt);
if (value)
free (value);
+ if (tst)
+ free (tst);
return retval;
}