From c17213b9500cfb26ba0d85b1a63c9aeb56981748 Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Mon, 25 Nov 2019 20:35:06 +0200 Subject: [PATCH] don't crash with no buffers, and clear the screen on exit --- libvisor/src/visor.c | 4 +++- visor/src/term.c | 9 +++++++++ visor/src/term.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libvisor/src/visor.c b/libvisor/src/visor.c index 2c93521..84ffd95 100644 --- a/libvisor/src/visor.c +++ b/libvisor/src/visor.c @@ -100,13 +100,15 @@ void vi_term_size(struct visor *vi, int xsz, int ysz) void vi_redraw(struct visor *vi) { - int i, col, cur_x = 0, cur_y = 0; + int i = 0, col, cur_x = 0, cur_y = 0; char c; struct vi_buffer *vb; struct vi_span *sp, *spans_end; const char *tptr, *tend; vi_addr spoffs, addr; + if(!vi->buflist) goto end; + vb = vi->buflist; if(!(sp = vi_buf_find_span(vb, vb->view_start, &spoffs))) { sp = vb->spans; diff --git a/visor/src/term.c b/visor/src/term.c index af7d278..4746836 100644 --- a/visor/src/term.c +++ b/visor/src/term.c @@ -56,11 +56,20 @@ int term_init(const char *ttypath) void term_cleanup(void) { + term_clear(); + term_setcursor(0, 0); + term_flush(); tcsetattr(ttyfd, TCSAFLUSH, &saved_term); close(ttyfd); ttyfd = -1; } +void term_reset(void) +{ + term_puts("\033c"); + term_flush(); +} + void term_getsize(int *width, int *height) { *width = term_width; diff --git a/visor/src/term.h b/visor/src/term.h index c1ce67d..fbf0558 100644 --- a/visor/src/term.h +++ b/visor/src/term.h @@ -36,6 +36,7 @@ union term_event { int term_init(const char *ttypath); void term_cleanup(void); +void term_reset(void); void term_getsize(int *width, int *height); void term_resize_func(void (*func)(int, int)); -- 1.7.10.4