diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-08-13 00:49:42 +0200 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-08-13 01:04:41 +0200 |
| commit | 64c8e378b251669241a3565adf2c8f2d792e1b8d (patch) | |
| tree | f2129aa9009af9a2c6858b507a007ba2686f4e45 /src/interface-curses/interface.c | |
| parent | b24c22dd15c0b02847d105b12e2fde72cb301d7d (diff) | |
curses: check for return values of newpad() and newwin()HEADmaster-fmsbw-cimaster
These can fail, so abort() just like glib does internally in case of OOM.
A special case is the pad allocation for autocompletion popups, which
can have excessively many lines. This is handled gracefully now
(the popup simply won't be displayed).
Diffstat (limited to 'src/interface-curses/interface.c')
| -rw-r--r-- | src/interface-curses/interface.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/interface-curses/interface.c b/src/interface-curses/interface.c index 11441d2..db996f5 100644 --- a/src/interface-curses/interface.c +++ b/src/interface-curses/interface.c @@ -761,7 +761,11 @@ teco_interface_init_interactive(GError **error) leaveok(stdscr, TRUE); teco_interface.info_window = newwin(1, 0, 0, 0); + if (G_UNLIKELY(!teco_interface.info_window)) + abort(); teco_interface.msg_window = newwin(1, 0, LINES - teco_cmdline.height - 1, 0); + if (G_UNLIKELY(!teco_interface.msg_window)) + abort(); WINDOW *cmdline_win = teco_view_get_window(teco_cmdline.view); wresize(cmdline_win, teco_cmdline.height, COLS); @@ -769,6 +773,8 @@ teco_interface_init_interactive(GError **error) teco_cmdline_resized(COLS); teco_interface.input_pad = newpad(1, 1); + if (G_UNLIKELY(!teco_interface.input_pad)) + abort(); /* * Controlling function key processing is important * on Unix Curses, as ESCAPE is handled as the beginning |
