From 36916e7b3d7ce118314e0eb5c3d4bcac9cc327da Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Thu, 7 Oct 2021 21:47:20 +0200 Subject: [PATCH] Fix issue in deque _next and deque _previous methods in some corner cases --- m-deque.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/m-deque.h b/m-deque.h index 33a65748..390716d0 100644 --- a/m-deque.h +++ b/m-deque.h @@ -590,7 +590,7 @@ it->index ++; \ if (M_UNLIKELY (it->index >= n->size)) { \ n = M_C(name, _node_list_next_obj)(it->deque->list, n); \ - if (M_UNLIKELY (n == NULL)) { \ + if (M_UNLIKELY (n == NULL || it->node == it->deque->back->node)) { \ /* Point to 'end' (can't undo it) */ \ it->node = it->deque->back->node; \ it->index = it->deque->back->node->size; \ @@ -609,14 +609,14 @@ it->index --; \ if (M_UNLIKELY (it->index >= n->size)) { \ n = M_C(name, _node_list_previous_obj)(it->deque->list, n); \ - if (M_UNLIKELY (n == NULL)) { \ + if (M_UNLIKELY (n == NULL || it->node == it->deque->front->node)) { \ /* Point to 'end' (can't undo it) */ \ it->node = it->deque->back->node; \ it->index = it->deque->back->node->size; \ return; \ } \ it->node = n; \ - it->index = 0; \ + it->index = n->size - 1; \ } \ } \ \