Skip to content

Commit 20308d4

Browse files
committed
shared_index add(), fixed a bug from recent change
1 parent 25e262c commit 20308d4

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

include/kit/kit.h

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,17 @@ namespace kit
477477
m_Unused = std::min(id, m_Unused);
478478
return e;
479479
}
480+
481+
unsigned add(std::shared_ptr<T> val) {
482+
unsigned id = next();
483+
m_Group[id] = val;
484+
return id;
485+
}
486+
487+
bool add(unsigned id, std::shared_ptr<T> val) {
488+
m_Group[id] = val;
489+
return true;
490+
}
480491

481492
unsigned remove_if(std::function<bool(const std::shared_ptr<T>&)> func)
482493
{
@@ -515,9 +526,13 @@ namespace kit
515526
}
516527
unsigned next() {
517528
auto l = this->lock();
518-
while(m_Group.find(m_Unused) != m_Group.end() ||
519-
m_Reserved.find(m_Unused) != m_Reserved.end())
520-
{
529+
while(true){
530+
if(m_Reserved.find(m_Unused) == m_Reserved.end() &&
531+
m_Group.find(m_Unused) == m_Group.end()
532+
){
533+
++m_Unused;
534+
break;
535+
}
521536
++m_Unused;
522537
}
523538
return m_Unused-1;

0 commit comments

Comments
 (0)