symbols: steal keys and modmaps when merging if possible

Signed-off-by: Ran Benita <ran234@gmail.com>
master
Ran Benita 2014-02-09 17:18:08 +02:00
parent a7d753e45a
commit 71a2593162
1 changed files with 20 additions and 8 deletions

View File

@ -509,16 +509,28 @@ MergeIncludedSymbols(SymbolsInfo *into, SymbolsInfo *from,
darray_foreach_from(group_name, from->group_names, group_names_in_both) darray_foreach_from(group_name, from->group_names, group_names_in_both)
darray_append(into->group_names, *group_name); darray_append(into->group_names, *group_name);
darray_foreach(keyi, from->keys) { if (darray_empty(into->keys)) {
keyi->merge = (merge == MERGE_DEFAULT ? keyi->merge : merge); into->keys = from->keys;
if (!AddKeySymbols(into, keyi, false)) darray_init(from->keys);
into->errorCount++; }
else {
darray_foreach(keyi, from->keys) {
keyi->merge = (merge == MERGE_DEFAULT ? keyi->merge : merge);
if (!AddKeySymbols(into, keyi, false))
into->errorCount++;
}
} }
darray_foreach(mm, from->modmaps) { if (darray_empty(into->modmaps)) {
mm->merge = (merge == MERGE_DEFAULT ? mm->merge : merge); into->modmaps = from->modmaps;
if (!AddModMapEntry(into, mm)) darray_init(from->modmaps);
into->errorCount++; }
else {
darray_foreach(mm, from->modmaps) {
mm->merge = (merge == MERGE_DEFAULT ? mm->merge : merge);
if (!AddModMapEntry(into, mm))
into->errorCount++;
}
} }
} }