mdview2: чинить детект лимита строк + кламп файлов >256 КБ
1. Лимит строк не показывал предупреждение: g_trunc_cause=TRUNC_LINES ставился в emit_seg, но главный цикл выходит по n_lines<max_lines ДО вызова emit_seg в переполненном состоянии (для code-block — один emit_seg на строку). Теперь ловим после цикла по признаку p<file_size (остановились, файл не кончился). 2. Файл >256 КБ больше не отвергаем экраном ошибки, а КЛАМПим: читаем первые 256 КБ, индексатор дописывает строку TRUNC_FILE (File too large - truncated at 256 KB). Приоритет ниже content/lines. Текст ошибки -2 поправлен (был 'size > 128K'). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -31,13 +31,15 @@ static void draw_line_from_cache(uint16_t line_idx, uint8_t row)
|
||||
/* Строка-обрыв (исчерпан контент-кэш / лимит строк): фикс. текст вживую,
|
||||
* без обращения к контент-кэшу (см. index_lines финализацию). */
|
||||
if (rec.flags & IF_TRUNC_MSG) {
|
||||
const char *msg;
|
||||
switch (rec.reserved) {
|
||||
case TRUNC_LINES: msg = "*** Line limit reached - document truncated ***"; break;
|
||||
case TRUNC_FILE: msg = "*** File too large - truncated at 256 KB ***"; break;
|
||||
default: msg = "*** Content cache exhausted - document truncated ***"; break;
|
||||
}
|
||||
bios_set_place(row, 0);
|
||||
bios_fillcharattr(' ', ATTR_WARN, SCREEN_W);
|
||||
put_str_attr(2, row,
|
||||
(rec.reserved == TRUNC_LINES)
|
||||
? "*** Line limit reached - document truncated ***"
|
||||
: "*** Content cache exhausted - document truncated ***",
|
||||
ATTR_WARN);
|
||||
put_str_attr(2, row, msg, ATTR_WARN);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user