чување 9c0145f21e2077642b3fd6473326d0f0dffff557
родитељ d1c6ab6711445cba5ffb974c8d65b4b3c0a855b5
Аутор: Страхиња Радић <sr@strahinja.org>
Датум: Sun, 19 Apr 2026 18:39:47 +0000
Apply {rune,table}_columns sanity checks with -f too
Diffstat:
| M | table.c | | | 26 | +++++++++----------------- |
измењених датотека: 1, додавања: 9(+), брисања: 17(-)
diff --git a/table.c b/table.c
@@ -974,18 +974,19 @@ do_input:
table_columns = 1;
/* Sanity check */
- if (rune_columns < 0 || rune_columns < (ssize_t)table_columns + 2)
+ if (rune_columns < 0 || rune_columns < (ssize_t)(2 * table_columns + 3))
{
- warning("Columns adjusted to %u", table_columns + 2);
- rune_columns = table_columns + 2;
+ warning("Columns adjusted to a reasonable minimum, %u",
+ 2 * table_columns + 3);
+ rune_columns = 2 * table_columns + 3;
}
- assert(rune_columns >= (ssize_t)table_columns + 2);
+ assert(rune_columns >= (ssize_t)(2 * table_columns + 3));
if (format && !border_mode)
{
int* pformat = format;
int format_sum = 0;
- while (*pformat)
+ while (*pformat && pformat - format < (ssize_t)table_columns)
format_sum += *pformat++;
pformat = format;
while (*pformat && format_sum)
@@ -993,26 +994,17 @@ do_input:
*pformat = round_div((rune_columns - table_columns - 2)
* (*pformat),
format_sum);
+ assert(*pformat > 0);
pformat++;
}
}
else
- format_value
- = (rune_columns - table_columns - 2) / table_columns;
-
- if (format_value < 1)
{
- warning("Impossible to fit %ld table columns into %ld rune "
- "columns (%ld-%ld-2)/%ld=%d), adjusting rune columns "
- "to %ld",
- table_columns, rune_columns, rune_columns,
- table_columns, table_columns, format_value,
- 2 * table_columns + 2);
- rune_columns = 2 * table_columns + 2;
format_value
= (rune_columns - table_columns - 2) / table_columns;
+
+ assert(format_value >= 1);
}
- assert(format_value > 0);
current_table_column = 0;
column_start = 0;