diff options
-rw-r--r-- | src/script/api/script_list.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/script/api/script_list.cpp b/src/script/api/script_list.cpp index 2fb2a8d6b..4d8b39ea1 100644 --- a/src/script/api/script_list.cpp +++ b/src/script/api/script_list.cpp @@ -557,10 +557,17 @@ void ScriptList::AddList(ScriptList *list) { if (list == this) return; - ScriptListMap *list_items = &list->items; - for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) { - this->AddItem((*iter).first); - this->SetValue((*iter).first, (*iter).second); + if (this->IsEmpty()) { + /* If this is empty, we can just take the items of the other list as is. */ + this->items = list->items; + this->buckets = list->buckets; + this->modifications++; + } else { + ScriptListMap *list_items = &list->items; + for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) { + this->AddItem((*iter).first); + this->SetValue((*iter).first, (*iter).second); + } } } |