From 35cab168f725476285e8714d751ffe6b001ac5b5 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Sun, 9 Feb 2014 16:49:45 +0200 Subject: [PATCH] types: steal types when merging if possible Like we do everywhere else. Removes some unnecessary allocations and copying. Signed-off-by: Ran Benita --- src/xkbcomp/types.c | 14 ++++++++++---- 1 file 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++; + } } }