From 11d2080242619ebca99889b9b846b99cbdeef79f Mon Sep 17 00:00:00 2001 From: git-bruh Date: Sun, 28 Nov 2021 13:54:02 -0500 Subject: [PATCH] prevent segfault in `tb_deinit` when TERM is invalid --- termbox.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/termbox.h b/termbox.h index 4bbca90..b4ce055 100644 --- a/termbox.h +++ b/termbox.h @@ -1976,13 +1976,15 @@ static int init_cellbuf() { } static int tb_deinit() { - bytebuf_puts(&global.out, global.caps[TB_CAP_SHOW_CURSOR]); - bytebuf_puts(&global.out, global.caps[TB_CAP_SGR0]); - bytebuf_puts(&global.out, global.caps[TB_CAP_CLEAR_SCREEN]); - bytebuf_puts(&global.out, global.caps[TB_CAP_EXIT_CA]); - bytebuf_puts(&global.out, global.caps[TB_CAP_EXIT_KEYPAD]); - bytebuf_puts(&global.out, TB_HARDCAP_EXIT_MOUSE); - bytebuf_flush(&global.out, global.wfd); + if (global.caps[0] != NULL && global.wfd >= 0) { + bytebuf_puts(&global.out, global.caps[TB_CAP_SHOW_CURSOR]); + bytebuf_puts(&global.out, global.caps[TB_CAP_SGR0]); + bytebuf_puts(&global.out, global.caps[TB_CAP_CLEAR_SCREEN]); + bytebuf_puts(&global.out, global.caps[TB_CAP_EXIT_CA]); + bytebuf_puts(&global.out, global.caps[TB_CAP_EXIT_KEYPAD]); + bytebuf_puts(&global.out, TB_HARDCAP_EXIT_MOUSE); + bytebuf_flush(&global.out, global.wfd); + } if (global.ttyfd >= 0) { if (global.has_orig_tios) { tcsetattr(global.ttyfd, TCSAFLUSH, &global.orig_tios); -- 2.39.5