From 6047ce7b9fb793da4e693e3777bbd3e1baf3146e Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 2 Jan 2013 01:31:34 -0600 Subject: [PATCH] Warn about undefined/invalid attributes during config parsing --- src/fcxml.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/fcxml.c b/src/fcxml.c index 8c934f5..1963cba 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -1092,10 +1092,26 @@ FcPStackPop (FcConfigParse *parse) FcConfigMessage (parse, FcSevereError, "mismatching element"); return FcFalse; } + + if (parse->pstack->attr) + { + /* Warn about unused attrs. */ + FcChar8 **attrs = parse->pstack->attr; + while (*attrs) + { + if (attrs[0][0]) + { + FcConfigMessage (parse, FcSevereError, "invalid attribute '%s'", attrs[0]); + } + attrs += 2; + } + } + FcVStackClear (parse); old = parse->pstack; parse->pstack = old->prev; FcStrBufDestroy (&old->str); + if (old->attr && old->attr != old->attr_buf_static) free (old->attr); @@ -1141,7 +1157,10 @@ FcConfigGetAttribute (FcConfigParse *parse, const char *attr) while (*attrs) { if (!strcmp ((char *) *attrs, attr)) + { + attrs[0][0] = '\0'; /* Mark as used. */ return attrs[1]; + } attrs += 2; } return 0; -- 2.7.4