From 5a08ed641b39fcd84373ac120ecfb2d11f9987b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 28 May 2021 17:41:47 +0200 Subject: [PATCH] grid: reflow: when determining row end coord, check *last* tracking point --- grid.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/grid.c b/grid.c index a2b0c0fc..6d8434ab 100644 --- a/grid.c +++ b/grid.c @@ -535,9 +535,17 @@ grid_resize_and_reflow( /* Do we have a (at least one) tracking point on this row */ struct coord *tp; - if ((*next_tp)->row == old_row_idx) { + if (unlikely((*next_tp)->row == old_row_idx)) { tp = *next_tp; - col_count = max(col_count, tp->col + 1); + + /* Find the *last* tracking point on this row */ + struct coord *last_on_row = tp; + for (struct coord **iter = next_tp; (*iter)->row == old_row_idx; iter++) + last_on_row = *iter; + + /* And make sure its end point is included in the col range */ + xassert(last_on_row->row == old_row_idx); + col_count = max(col_count, last_on_row->col + 1); } else tp = NULL;