From 1f1345de098294a4744981d0043512569a35102a Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sat, 25 Apr 2020 22:41:19 +0200 Subject: Codechange: [Script] Improve copying a list into another empty list. --- src/script/api/script_list.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/script') 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); + } } } -- cgit v1.2.3-70-g09d2