diff --git a/ChangeLog b/ChangeLog index 7216ca1..f93693b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-10-25 Jinghua Luo + reviewed by: plam + + * src/fccfg.c (FcConfigValues): + + List iteration not needed in FcConfigValues, since it's building + up the list itself; we can just strip FcVoid elements during + construction. + 2005-11-17 Patrick Lam * src/fccfg.c (FcConfigValues): diff --git a/src/fccfg.c b/src/fccfg.c index 3c311f9..4543553 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -1091,7 +1091,6 @@ static FcValueList * FcConfigValues (FcPattern *p, FcExpr *e, FcValueBinding binding) { FcValueList *l; - FcValueListPtr lp; if (!e) return 0; @@ -1110,19 +1109,15 @@ FcConfigValues (FcPattern *p, FcExpr *e, FcValueBinding binding) l->next = FcValueListPtrCreateDynamic(0); } l->binding = binding; - lp = FcValueListPtrCreateDynamic(l); - while (FcValueListPtrU(lp) && FcValueListPtrU(lp)->value.type == FcTypeVoid) + if (l->value.type == FcTypeVoid) { - FcValueListPtr next = FcValueListPtrU(lp)->next; + FcValueList *next = FcValueListPtrU(l->next); - if (lp.bank == FC_BANK_DYNAMIC) - { - FcMemFree (FC_MEM_VALLIST, sizeof (FcValueList)); - free (l); - } - lp = next; - l = FcValueListPtrU (lp); + FcMemFree (FC_MEM_VALLIST, sizeof (FcValueList)); + free (l); + l = next; } + return l; }