diff options
author | marha <marha@users.sourceforge.net> | 2013-09-02 09:05:37 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-09-02 09:05:37 +0200 |
commit | 9e382b6be0e81397f18ec0b733a2e88dc3465a33 (patch) | |
tree | a192d9a8a7362c6396ddfba9f7d51ae826fc1844 /fontconfig/src/fccfg.c | |
parent | 5ebbc3a366287b631775ed3e17537580d380db8a (diff) | |
download | vcxsrv-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.c | 15 |
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; } |