Fix issue in deque _next and deque _previous methods in some corner cases
This commit is contained in:
1 parent
ba778e9bd2
commit
36916e7b3d
1 file changed
+3
-3
@@ -590,7 +590,7 @@
|
|||||||
it->index ++; \
|
it->index ++; \
|
||||||
if (M_UNLIKELY (it->index >= n->size)) { \
|
if (M_UNLIKELY (it->index >= n->size)) { \
|
||||||
n = M_C(name, _node_list_next_obj)(it->deque->list, n); \
|
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) */ \
|
/* Point to 'end' (can't undo it) */ \
|
||||||
it->node = it->deque->back->node; \
|
it->node = it->deque->back->node; \
|
||||||
it->index = it->deque->back->node->size; \
|
it->index = it->deque->back->node->size; \
|
||||||
@@ -609,14 +609,14 @@
|
|||||||
it->index --; \
|
it->index --; \
|
||||||
if (M_UNLIKELY (it->index >= n->size)) { \
|
if (M_UNLIKELY (it->index >= n->size)) { \
|
||||||
n = M_C(name, _node_list_previous_obj)(it->deque->list, n); \
|
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) */ \
|
/* Point to 'end' (can't undo it) */ \
|
||||||
it->node = it->deque->back->node; \
|
it->node = it->deque->back->node; \
|
||||||
it->index = it->deque->back->node->size; \
|
it->index = it->deque->back->node->size; \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
it->node = n; \
|
it->node = n; \
|
||||||
it->index = 0; \
|
it->index = n->size - 1; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
|
|||||||
Reference in new issue
Block a user