Fix NodeEntry::deleteChildren() to update indices correctly
This commit is contained in:
parent
a7b597759b
commit
ba1e58c1e5
15
io/entry.cpp
15
io/entry.cpp
|
@ -290,13 +290,22 @@ NodeEntry::~NodeEntry()
|
||||||
*/
|
*/
|
||||||
void NodeEntry::deleteChildren(int begin, int end)
|
void NodeEntry::deleteChildren(int begin, int end)
|
||||||
{
|
{
|
||||||
auto iterator = m_children.cbegin() + begin;
|
const auto endIterator = m_children.begin() + end;
|
||||||
auto endIterator = m_children.begin() + end;
|
|
||||||
for (; iterator < endIterator; ++iterator) {
|
// delete the children
|
||||||
|
for (auto iterator = m_children.cbegin() + begin; iterator != endIterator; ++iterator) {
|
||||||
(*iterator)->m_parent = nullptr;
|
(*iterator)->m_parent = nullptr;
|
||||||
delete *iterator;
|
delete *iterator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove the children from the list
|
||||||
m_children.erase(m_children.begin() + begin, endIterator);
|
m_children.erase(m_children.begin() + begin, endIterator);
|
||||||
|
|
||||||
|
// adjust indices of subsequent children
|
||||||
|
const int diff = end - begin;
|
||||||
|
for (auto iterator = m_children.begin() + begin, end = m_children.end(); iterator != end; ++iterator) {
|
||||||
|
(*iterator)->m_index -= diff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
Loading…
Reference in New Issue