diff options
-rw-r--r-- | src/xkbcomp/types.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/xkbcomp/types.c b/src/xkbcomp/types.c index f98d97a..b61ad55 100644 --- a/src/xkbcomp/types.c +++ b/src/xkbcomp/types.c @@ -182,10 +182,16 @@ MergeIncludedKeyTypes(KeyTypesInfo *into, KeyTypesInfo *from, from->name = NULL; } - darray_foreach(type, from->types) { - type->merge = (merge == MERGE_DEFAULT ? type->merge : merge); - if (!AddKeyType(into, type, false)) - into->errorCount++; + if (darray_empty(into->types)) { + into->types = from->types; + darray_init(from->types); + } + else { + darray_foreach(type, from->types) { + type->merge = (merge == MERGE_DEFAULT ? type->merge : merge); + if (!AddKeyType(into, type, false)) + into->errorCount++; + } } } |