From fa96602d0fd78085bfd8f407ff025d42ef10f872 Mon Sep 17 00:00:00 2001 From: Dan Nicholson Date: Sat, 4 Apr 2009 09:51:33 -0700 Subject: [PATCH] xkbcomp: Fail when converting rules to components returns an error XkbcRF_GetComponents was returning an error but leaving the generated components alone. This ensures that the broken XkbComponentNamesPtr is freed and the error is passed up to the caller. --- src/xkbcomp/xkbcomp.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/xkbcomp/xkbcomp.c b/src/xkbcomp/xkbcomp.c index 790f1ae..bab4403 100644 --- a/src/xkbcomp/xkbcomp.c +++ b/src/xkbcomp/xkbcomp.c @@ -86,8 +86,17 @@ XkbComponentsFromRules(const char *rulesPath, const XkbRF_VarDefsPtr defs) goto unwind_rules; } - if (!XkbcRF_GetComponents(rules, defs, names)) + if (!XkbcRF_GetComponents(rules, defs, names)) { + _XkbFree(names->keymap); + _XkbFree(names->keycodes); + _XkbFree(names->types); + _XkbFree(names->compat); + _XkbFree(names->symbols); + _XkbFree(names->geometry); + _XkbFree(names); + names = NULL; ERROR("no components returned from XKB rules \"%s\"\n", rulesPath); + } unwind_rules: XkbcRF_Free(rules, True); -- 2.7.4