aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/interface-curses/interface.c
diff options
context:
space:
mode:
authorRobin Haberkorn <rhaberkorn@fmsbw.de>2026-08-13 00:49:42 +0200
committerRobin Haberkorn <rhaberkorn@fmsbw.de>2026-08-13 01:04:41 +0200
commit64c8e378b251669241a3565adf2c8f2d792e1b8d (patch)
treef2129aa9009af9a2c6858b507a007ba2686f4e45 /src/interface-curses/interface.c
parentb24c22dd15c0b02847d105b12e2fde72cb301d7d (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.c6
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