diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.cpp b/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.cpp index 9f21b63..075f707 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.cpp +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.cpp @@ -192,7 +192,7 @@ void CIntrusiveTreeBase::remove(N* node) } else { - child = node->left() ? node->right() : node->left(); + child = node->left() ? node->left() : node->right(); parent = node->getParent(); color = node->getColor(); diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.h b/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.h index 9796ee6..ae64fb4 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.h +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CIntrusiveTree.h @@ -173,7 +173,7 @@ class CIntrusiveTree final : protected CIntrusiveTreeBase T* first() const { return toType(minmax(N::Left)); } T* last() const { return toType(minmax(N::Right)); } - bool empty() const { return m_root != nullptr; } + bool empty() const { return m_root == nullptr; } void clear() { m_root = nullptr; } T* prev(T* node) const { return toType(walk(toNode(node), N::Left)); } @@ -194,31 +194,11 @@ class CIntrusiveTree final : protected CIntrusiveTreeBase mode != UpperBound ? N::Left : N::Right, [&lambda](N* curnode) { return lambda(toType(curnode)); }); - switch (mode) - { - default: - case Exact: - break; - case LowerBound: - if (!node && parent) - { - if (&parent->left() == &point) - node = parent; - else - node = walk(parent, N::Right); - } - break; - case UpperBound: - if (node) - node = walk(node, N::Right); - else if (parent) - { - if (&parent->right() == &point) - node = walk(parent, N::Right); - else - node = parent; - } - break; + if (mode != Exact) { + if (mode == UpperBound && node) + node = walk(node, N::Right); + else if (!node && parent) + node = &parent->left() == &point ? parent : walk(parent, N::Right); } return toType(node); }