fix(ui): address PR review comments
All checks were successful
CI Code / Check spelling (pull_request) Successful in 19s
CI Code / Check coding style (pull_request) Successful in 33s
CI Code / Code Coverage (pull_request) Successful in 4m46s
CI Code / Linux (debian) (pull_request) Successful in 6m8s
CI Code / Linux (ubuntu) (pull_request) Successful in 6m15s
CI Code / Linux (arch) (pull_request) Successful in 6m23s

- inputwin.c: improve MB_CUR_MAX error message with actionable advice
- inputwin.c: add log_error when input window pad allocation fails
- statusbar.c: add log_warning for invalid cols values
- window.c: simplify _check_subwin_width using CLAMP macro
This commit is contained in:
2026-02-06 13:29:36 +03:00
parent 34501d913c
commit 56dcb54ffc
4 changed files with 10 additions and 11 deletions

View File

@@ -77,6 +77,8 @@ _db_teardown(const char* ctx)
}
g_chatlog_database = NULL;
}
// Safe to call unconditionally; no-op if not initialized.
// See: https://www.sqlite.org/c3ref/initialize.html
sqlite3_shutdown();
}

View File

@@ -148,7 +148,8 @@ create_input_window(void)
* Fail gracefully instead of aborting in production.
*/
if (MB_CUR_MAX > PROF_MB_CUR_MAX) {
cons_show_error("Your locale's MB_CUR_MAX (%zu) exceeds PROF_MB_CUR_MAX (%d); input window disabled.", (size_t)MB_CUR_MAX, PROF_MB_CUR_MAX);
log_error("Locale MB_CUR_MAX (%zu) exceeds compiled limit (%d)", (size_t)MB_CUR_MAX, PROF_MB_CUR_MAX);
cons_show_error("Unsupported locale. Before running, execute in terminal: export LC_ALL=C.UTF-8");
return;
}
#ifdef NCURSES_REENTRANT
@@ -167,7 +168,7 @@ create_input_window(void)
inp_win = newpad(1, INP_WIN_MAX);
if (!inp_win) {
// Failed to allocate input pad; leave inp_win NULL and avoid further use
log_error("Failed to allocate input window pad");
return;
}
wbkgd(inp_win, theme_attrs(THEME_INPUT_TEXT));

View File

@@ -40,6 +40,8 @@
#include <string.h>
#include <stdlib.h>
#include "log.h"
#ifdef HAVE_NCURSESW_NCURSES_H
#include <ncursesw/ncurses.h>
#elif HAVE_NCURSES_H
@@ -112,6 +114,7 @@ status_bar_init(void)
int row = screen_statusbar_row();
int cols = getmaxx(stdscr);
if (cols <= 0) {
log_warning("status_bar_init: invalid cols %d, defaulting to 1", cols);
cols = 1;
}
statusbar_win = newwin(1, cols, row, 0);
@@ -157,6 +160,7 @@ status_bar_resize(void)
}
int cols = getmaxx(stdscr);
if (cols <= 0) {
log_warning("status_bar_resize: invalid cols %d, defaulting to 1", cols);
cols = 1;
}
werase(statusbar_win);

View File

@@ -79,15 +79,7 @@ static void _win_print_wrapped(WINDOW* win, const char* const message, size_t in
static int
_check_subwin_width(int cols, int width)
{
if (cols > 1) {
if (width < 1)
width = 1;
if (width >= cols)
width = cols - 1;
} else {
width = 1;
}
return width;
return cols <= 1 ? 1 : CLAMP(width, 1, cols - 1);
}
int