From 01461929d70c5cd03f8b9fd443eac737680732d4 Mon Sep 17 00:00:00 2001 From: Dianne Skoll Date: Mon, 29 Sep 2025 09:48:15 -0400 Subject: [PATCH] Fix line-counting logic that made entirely-empty weeks one row too short. --- src/calendar.c | 13 +++++++++++-- tests/test.cmp | 13 +++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/calendar.c b/src/calendar.c index d4a39020..6eec2282 100644 --- a/src/calendar.c +++ b/src/calendar.c @@ -1030,6 +1030,9 @@ static void DoCalendarOneWeek(int nleft) done = 0; while (!done) { done = WriteOneCalLine(OrigDse, wd); + if (done < 0) { + break; + } LinesWritten++; } @@ -1290,6 +1293,9 @@ static int WriteCalendarRow(void) done = 0; while (!done) { done = WriteOneCalLine(OrigDse, wd); + if (done < 0) { + break; + } LinesWritten++; } @@ -1482,6 +1488,9 @@ static void PrintCentered(char const *s, int width, char const *pad) /* WriteOneCalLine */ /* */ /* Write a single line. */ +/* Returns: -1 if no line was written and nothing left to do */ +/* 0 if a line was written and there is more to do */ +/* 1 if a line was written and nothing left to do */ /* */ /***************************************************************/ static int WriteOneCalLine(int start_dse, int wd) @@ -1498,8 +1507,8 @@ static int WriteOneCalLine(int start_dse, int wd) } } if (!d) { - /* Nothing to do */ - return 1; + /* Nothing to do and no line was written */ + return -1; } gon(); DRAW(tb); diff --git a/tests/test.cmp b/tests/test.cmp index a75df051..add7e666 100644 --- a/tests/test.cmp +++ b/tests/test.cmp @@ -19069,6 +19069,7 @@ Color Test (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B +(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B (0x(B5 ‎ (0x(B6 ‎ (0x(B7 ‎ (0x(B8 ‎ (0x(B9 ‎ (0x(B10 ‎ (0x(B11 ‎ (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B @@ -19076,6 +19077,7 @@ Color Test (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B +(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B (0x(B12 ‎ (0x(B13 ‎ (0x(B14 ‎ (0x(B15 ‎ (0x(B16 ‎ (0x(B17 ‎ (0x(B18 ‎ (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B @@ -19083,6 +19085,7 @@ Color Test (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B +(0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0tqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqnqqqqqqqqqqu(B (0x(B19 ‎ (0x(B20 ‎ (0x(B21 ‎ (0x(B22 ‎ (0x(B23 ‎ (0x(B24 ‎ (0x(B25 ‎ (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B (0x(B @@ -23233,6 +23236,7 @@ STDOUT is a: PIPE | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |5 |6 |7 |8 |9 |10 |11 | | | | | | | | | @@ -23248,6 +23252,7 @@ STDOUT is a: PIPE | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |19 |20 |21 |22 |23 |24 |25 | | | | | | | | | @@ -23255,6 +23260,7 @@ STDOUT is a: PIPE | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |26 |27 |28 |29 |30 | | | | | | | | | | | @@ -23262,6 +23268,7 @@ STDOUT is a: PIPE | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ ┌────────────────────────────────────────────────────────────────────────────┐ │ November 2019‎ │ @@ -24316,6 +24323,7 @@ No reminders. | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |2 |3 |4 |5 |6 |7 |8 | | | | | | | | | @@ -24323,6 +24331,7 @@ No reminders. | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |9 |10 |11 |12 |13 |14 |15 | | | | | | | | | @@ -24330,6 +24339,7 @@ No reminders. | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |16 |17 |18 |19 |20 |21 |22 | | | | | | | | | @@ -24347,6 +24357,7 @@ No reminders. | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |30 | | | | | | | | | | | | | | | @@ -24354,6 +24365,7 @@ No reminders. | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ +----------------------------------------------------------------------------+ | November 2023 | @@ -25146,6 +25158,7 @@ TRANSLATE "yesterday" "" | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | +----------+----------+----------+----------+----------+----------+----------+ |4 ‎ |5 ‎ |6 ‎ |7 ‎ |8 ‎ |9 ‎ |10 ‎ | | | | | | | | |