diff --git a/apps/opencs/model/world/refiddata.hpp b/apps/opencs/model/world/refiddata.hpp index c921ab7244..175aaef410 100644 --- a/apps/opencs/model/world/refiddata.hpp +++ b/apps/opencs/model/world/refiddata.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -94,16 +95,11 @@ namespace CSMWorld template void RefIdDataContainer::insertRecord(std::unique_ptr record) { - // convert base pointer to record type pointer first - if(Record *tmp = dynamic_cast*>(record.get())) - { - std::unique_ptr > newRecord; - newRecord.reset(tmp); - mContainer.push_back(std::move(newRecord)); - record.release(); - } - else - throw std::runtime_error ("invalid record for RefIdDataContainer"); + assert(record != nullptr); + // convert base pointer to record type pointer + std::unique_ptr> typedRecord(&dynamic_cast&>(*record)); + record.release(); + mContainer.push_back(std::move(typedRecord)); } template