Skip to content

Commit 6f6e534

Browse files
committed
[CModel] Refactor resource ID generation to ensure uniqueness
1 parent daf8c64 commit 6f6e534

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

Source/Model/Classes/NMR_Model.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -399,15 +399,22 @@ namespace NMR {
399399
// Retrieve a unique Resource ID
400400
ModelResourceID CModel::generateResourceID()
401401
{
402-
// TODO: is this truly safe?
403-
auto iIterator = m_ResourceMap.rbegin();
404-
if (iIterator != m_ResourceMap.rend())
405-
return iIterator->first + 1;
406-
else
407-
return 1;
402+
ModelResourceID highestID = 0;
403+
404+
if (m_ResourceMap.empty())
405+
{
406+
return 1;
407+
}
408+
409+
highestID = std::max_element(m_ResourceMap.begin(), m_ResourceMap.end(),
410+
[](const auto &a, const auto &b) {
411+
return a.first < b.first;
412+
})->first;
413+
414+
return highestID + 1;
408415
}
409416

410-
void CModel::updateUniqueResourceID(UniqueResourceID nOldID, UniqueResourceID nNewID)
417+
void CModel::updateUniqueResourceID(UniqueResourceID nOldID, UniqueResourceID nNewID)
411418
{
412419
if (m_ResourceMap.find(nNewID) != m_ResourceMap.end()) {
413420
throw CNMRException(NMR_ERROR_DUPLICATEMODELRESOURCE);

0 commit comments

Comments
 (0)