From cdc1224233dc2c0de2605d9a555d98b13245f513 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Wed, 9 Oct 2013 20:44:51 +0000 Subject: [PATCH] Fix an edge case of divider-obsoletion in Group. When you drag group elements around, previous dividers are meant to dissolve whenever the same two elements are no longer on each side of it. One case in which this didn't happen was that of dragging an element from the left of a divider to the far right column - the divider became invisible, but would then startlingly reappear if you drag that element back to the left of whatever it was left of before. [originally from svn r10051] --- unfinished/group.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/unfinished/group.c b/unfinished/group.c index 74a63fc..c303326 100644 --- a/unfinished/group.c +++ b/unfinished/group.c @@ -1430,8 +1430,9 @@ static game_state *execute_move(const game_state *from, const char *move) /* * Eliminate any obsoleted dividers. */ - for (x = 0; x+1 < w; x++) { - int i = ret->sequence[x], j = ret->sequence[x+1]; + for (x = 0; x < w; x++) { + int i = ret->sequence[x]; + int j = (x+1 < w ? ret->sequence[x+1] : -1); if (ret->dividers[i] != j) ret->dividers[i] = -1; } -- 2.30.2