diff --git a/apps/opencs/model/world/collection.hpp b/apps/opencs/model/world/collection.hpp index 16f5ce51f4..a136734612 100644 --- a/apps/opencs/model/world/collection.hpp +++ b/apps/opencs/model/world/collection.hpp @@ -443,19 +443,24 @@ namespace CSMWorld void Collection::insertRecord (const RecordBase& record, int index, UniversalId::Type type) { - if (index<0 || index>static_cast (mRecords.size())) + int size = static_cast(mRecords.size()); + if (index < 0 || index > size) throw std::runtime_error ("index out of range"); const Record& record2 = dynamic_cast&> (record); - mRecords.insert (mRecords.begin()+index, record2); + if (index == size) + mRecords.push_back (record2); + else + mRecords.insert (mRecords.begin()+index, record2); - if (index (mRecords.size())-1) + if (index < size-1) { - for (std::map::iterator iter (mIndex.begin()); iter!=mIndex.end(); - ++iter) - if (iter->second>=index) - ++(iter->second); + for (std::map::iterator iter (mIndex.begin()); iter!=mIndex.end(); ++iter) + { + if (iter->second >= index) + ++(iter->second); + } } mIndex.insert (std::make_pair (Misc::StringUtils::lowerCase (IdAccessorT().getId (