Fix NodeEntry::deleteChildren() to update indices correctly

This commit is contained in:
Martchus 2018-06-09 21:17:50 +02:00
parent a7b597759b
commit ba1e58c1e5
1 changed files with 12 additions and 3 deletions

View File

@ -290,13 +290,22 @@ NodeEntry::~NodeEntry()
*/
void NodeEntry::deleteChildren(int begin, int end)
{
auto iterator = m_children.cbegin() + begin;
auto endIterator = m_children.begin() + end;
for (; iterator < endIterator; ++iterator) {
const auto endIterator = m_children.begin() + end;
// delete the children
for (auto iterator = m_children.cbegin() + begin; iterator != endIterator; ++iterator) {
(*iterator)->m_parent = nullptr;
delete *iterator;
}
// remove the children from the list
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;
}
}
/*!