From: Timo Kokkonen Date: Mon, 5 Apr 2010 12:43:14 +0000 (+0300) Subject: quadtree: Use the validator X-Git-Url: http://git.itanic.dy.fi/?p=sdl-planets;a=commitdiff_plain;h=d2ed1cd0cf28d2ebd1e1db51f49d907ac20af785 quadtree: Use the validator Signed-off-by: Timo Kokkonen --- diff --git a/quadtree.c b/quadtree.c index 25b8ad6..a0ec4ce 100644 --- a/quadtree.c +++ b/quadtree.c @@ -68,6 +68,10 @@ struct quadtree *quadtree_add(struct quadtree *parent, struct quadtree *b)) { int ret; + if (parent == new) + trap(); + + validate_tree(parent); ret = compare(parent, new); @@ -82,6 +86,8 @@ struct quadtree *quadtree_add(struct quadtree *parent, parent->child[ret] = new; new->parent = parent; + validate_tree(new); + return new; } @@ -98,11 +104,18 @@ _quadtree_reposition_reqursively(struct quadtree *root, { int i; + validate_tree(node); + /* First remove all children, if any */ + for (i = 0; i < 4; i++) { if (!node->child[i]) continue; + if (node->child[i] == node || + node->child[i] == node->parent) + trap(); + _quadtree_reposition_reqursively(root, node->child[i], compare); node->child[i] = 0; } @@ -163,6 +176,7 @@ struct quadtree *quadtree_del(struct quadtree *node, parent = quadtree_find_parent(node); node->parent = 0; + validate_tree(parent); return parent; }