From a0c1eeea98b907abc0fd1200f2be6308c854d5c6 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 26 Feb 2025 12:09:20 +0100 Subject: [PATCH] xkb: simplify loops in XkbRF_Free() Make the code a bit easier to read by simplifying the loops. Signed-off-by: Enrico Weigelt, metux IT consult Part-of: --- xkb/maprules.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/xkb/maprules.c b/xkb/maprules.c index 222b6107e..8a1944ef5 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -971,31 +971,34 @@ XkbRF_LoadRules(FILE * file, XkbRF_RulesPtr rules) void XkbRF_Free(XkbRF_RulesPtr rules) { - int i; - XkbRF_RulePtr rule; - XkbRF_GroupPtr group; - if (!rules) return; + if (rules->rules) { - for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) { - free((void *) rule->model); - free((void *) rule->layout); - free((void *) rule->variant); - free((void *) rule->option); - free((void *) rule->keycodes); - free((void *) rule->symbols); - free((void *) rule->types); - free((void *) rule->compat); - free((void *) rule->geometry); + XkbRF_RulePtr r = rules->rules; + int num = rules->num_rules; + for (int i = 0; i < num; i++) { + // the typecast on free() is necessary because the pointers are const + free((void *) r[i].model); + free((void *) r[i].layout); + free((void *) r[i].variant); + free((void *) r[i].option); + free((void *) r[i].keycodes); + free((void *) r[i].symbols); + free((void *) r[i].types); + free((void *) r[i].compat); + free((void *) r[i].geometry); } free(rules->rules); } if (rules->groups) { - for (i = 0, group = rules->groups; i < rules->num_groups; i++, group++) { - free((void *) group->name); - free(group->words); + XkbRF_GroupPtr g = rules->groups; + int num = rules->num_groups; + for (int i = 0; i < num; i++) { + // the typecast on free() is necessary because the pointers are const + free((void *) g[i].name); + free(g[i].words); } free(rules->groups); }