[Fontconfig] fontconfig: Branch 'master'
Akira TAGOH
tagoh at kemper.freedesktop.org
Sun Aug 25 20:48:29 PDT 2013
src/fccfg.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
New commits:
commit fba9efecd2ef3aca84e0a4806899c09ba95f4c19
Author: Akira TAGOH <akira at tagoh.org>
Date: Mon Aug 26 12:47:07 2013 +0900
Fix a wrong edit position when 'kind' is different
diff --git a/src/fccfg.c b/src/fccfg.c
index d399f7f..b88095b 100644
--- a/src/fccfg.c
+++ b/src/fccfg.c
@@ -1493,11 +1493,11 @@ FcConfigSubstituteWithPat (FcConfig *config,
FcValue v;
FcSubst *s;
FcRule *r;
- FcValueList *l, **value = NULL;
+ FcValueList *l, **value = NULL, *vl;
FcPattern *m;
FcStrSet *strs;
FcObject object = FC_INVALID_OBJECT;
- FcPatternElt **elt = NULL;
+ FcPatternElt **elt = NULL, *e;
int i, nobjs;
FcBool retval = FcTrue;
@@ -1593,12 +1593,17 @@ FcConfigSubstituteWithPat (FcConfig *config,
else
m = p;
if (m)
- elt[object] = FcPatternObjectFindElt (m, r->u.test->object);
+ e = FcPatternObjectFindElt (m, r->u.test->object);
+ else
+ e = NULL;
+ /* different 'kind' won't be the target of edit */
+ if (!elt[object] && kind == r->u.test->kind)
+ elt[object] = e;
/*
* If there's no such field in the font,
* then FcQualAll matches while FcQualAny does not
*/
- if (!elt[object])
+ if (!e)
{
if (r->u.test->qual == FcQualAll)
{
@@ -1616,10 +1621,13 @@ FcConfigSubstituteWithPat (FcConfig *config,
* Check to see if there is a match, mark the location
* to apply match-relative edits
*/
- value[object] = FcConfigMatchValueList (m, p_pat, kind, r->u.test, elt[object]->values);
- if (!value[object] ||
- (r->u.test->qual == FcQualFirst && value[object] != elt[object]->values) ||
- (r->u.test->qual == FcQualNotFirst && value[object] == elt[object]->values))
+ vl = FcConfigMatchValueList (m, p_pat, kind, r->u.test, e->values);
+ /* different 'kind' won't be the target of edit */
+ if (!value[object] && kind == r->u.test->kind)
+ value[object] = vl;
+ if (!vl ||
+ (r->u.test->qual == FcQualFirst && vl != e->values) ||
+ (r->u.test->qual == FcQualNotFirst && vl == e->values))
{
if (FcDebug () & FC_DBG_EDIT)
printf ("No match\n");
More information about the Fontconfig
mailing list