From ddefa5021f7785514f373aab6a8e6191a867278e Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Wed, 4 Apr 2012 14:47:57 +0900 Subject: [PATCH] Bug 22862 - ignores s Allow to use the test elements in the alias element. --- fonts.dtd | 2 +- src/fcxml.c | 27 +++++++++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/fonts.dtd b/fonts.dtd index 5f072ee..e1e8b73 100644 --- a/fonts.dtd +++ b/fonts.dtd @@ -113,7 +113,7 @@ - + diff --git a/src/fcxml.c b/src/fcxml.c index 0fb82b6..79dfc0b 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -1583,7 +1583,7 @@ FcParseAlias (FcConfigParse *parse) FcExpr *family = 0, *accept = 0, *prefer = 0, *def = 0, *new = 0; FcEdit *edit = 0, *next; FcVStack *vstack; - FcTest *test; + FcTest *test = NULL; FcValueBinding binding; if (!FcConfigLexBinding (parse, FcConfigGetAttribute (parse, "binding"), &binding)) @@ -1626,6 +1626,11 @@ FcParseAlias (FcConfigParse *parse) def = vstack->u.expr; vstack->tag = FcVStackNone; break; + case FcVStackTest: + vstack->u.test->next = test; + test = vstack->u.test; + vstack->tag = FcVStackNone; + break; default: FcConfigMessage (parse, FcSevereWarning, "bad alias"); break; @@ -1683,11 +1688,21 @@ FcParseAlias (FcConfigParse *parse) } if (edit) { - test = FcTestCreate (parse, FcMatchPattern, - FcQualAny, - (FcChar8 *) FC_FAMILY, - FcOpEqual, - family); + FcTest *t = FcTestCreate (parse, FcMatchPattern, + FcQualAny, + (FcChar8 *) FC_FAMILY, + FcOpEqual, + family); + if (test) + { + FcTest *p = test; + + while (p->next) + p = p->next; + p->next = t; + } + else + test = t; if (test) if (!FcConfigAddEdit (parse->config, test, edit, FcMatchPattern)) FcTestDestroy (test);