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 <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1840>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-02-26 12:09:20 +01:00 committed by Marge Bot
parent abfbc76824
commit a0c1eeea98

View File

@ -971,31 +971,34 @@ XkbRF_LoadRules(FILE * file, XkbRF_RulesPtr rules)
void void
XkbRF_Free(XkbRF_RulesPtr rules) XkbRF_Free(XkbRF_RulesPtr rules)
{ {
int i;
XkbRF_RulePtr rule;
XkbRF_GroupPtr group;
if (!rules) if (!rules)
return; return;
if (rules->rules) { if (rules->rules) {
for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) { XkbRF_RulePtr r = rules->rules;
free((void *) rule->model); int num = rules->num_rules;
free((void *) rule->layout); for (int i = 0; i < num; i++) {
free((void *) rule->variant); // the typecast on free() is necessary because the pointers are const
free((void *) rule->option); free((void *) r[i].model);
free((void *) rule->keycodes); free((void *) r[i].layout);
free((void *) rule->symbols); free((void *) r[i].variant);
free((void *) rule->types); free((void *) r[i].option);
free((void *) rule->compat); free((void *) r[i].keycodes);
free((void *) rule->geometry); free((void *) r[i].symbols);
free((void *) r[i].types);
free((void *) r[i].compat);
free((void *) r[i].geometry);
} }
free(rules->rules); free(rules->rules);
} }
if (rules->groups) { if (rules->groups) {
for (i = 0, group = rules->groups; i < rules->num_groups; i++, group++) { XkbRF_GroupPtr g = rules->groups;
free((void *) group->name); int num = rules->num_groups;
free(group->words); 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); free(rules->groups);
} }