From: Bastien Dejean Date: Thu, 6 Jun 2019 09:25:32 +0000 (+0200) Subject: Fix infinite loop in `find_closest_node` X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=5c39084ad30ea13d1ef6da3eb5f72c056c88360f;p=bspwm.git Fix infinite loop in `find_closest_node` If `ref->node == NULL` and `ref->desktop->root != NULL` (the reference desktop contains hidden nodes or/and receptacles), then the ending condition `n != ref->node` will never be true. Fixes #977. --- diff --git a/src/tree.c b/src/tree.c index c57d034..6b522d1 100644 --- a/src/tree.c +++ b/src/tree.c @@ -1626,6 +1626,9 @@ bool find_closest_node(coordinates_t *ref, coordinates_t *dst, cycle_dir_t dir, } n = (dir == CYCLE_PREV ? prev_leaf(n, d->root) : next_leaf(n, d->root)); HANDLE_BOUNDARIES(m, d, n); + if (ref->node == NULL && d == ref->desktop) { + break; + } } #undef HANDLE_BOUNDARIES return false;