summaryrefslogtreecommitdiff
path: root/src/xkbcomp/ast-build.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xkbcomp/ast-build.c')
-rw-r--r--src/xkbcomp/ast-build.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/xkbcomp/ast-build.c b/src/xkbcomp/ast-build.c
index 7ee13d0..347eed8 100644
--- a/src/xkbcomp/ast-build.c
+++ b/src/xkbcomp/ast-build.c
@@ -462,15 +462,16 @@ IncludeStmt *
IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge)
{
IncludeStmt *incl, *first;
- char *file, *map, *stmt, *tmp, *extra_data;
+ char *stmt, *tmp;
char nextop;
incl = first = NULL;
- file = map = NULL;
tmp = str;
stmt = strdup_safe(str);
while (tmp && *tmp)
{
+ char *file = NULL, *map = NULL, *extra_data = NULL;
+
if (!ParseIncludeMap(&tmp, &file, &map, &nextop, &extra_data))
goto err;
@@ -494,8 +495,12 @@ IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge)
incl = incl->next_incl;
}
- if (!incl)
+ if (!incl) {
+ free(file);
+ free(map);
+ free(extra_data);
break;
+ }
incl->common.type = STMT_INCLUDE;
incl->common.next = NULL;