diff options
Diffstat (limited to 'src/screen.c')
| -rw-r--r-- | src/screen.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/screen.c b/src/screen.c index dd25938..d090e51 100644 --- a/src/screen.c +++ b/src/screen.c @@ -78,14 +78,20 @@ void scr_destroy(char s) { if(s < 2 || s >= MAX_SCREENS) return; + /* don't destroy if already destroyed (or never created) */ + if(screens[s].status == SCR_UNUSED) + return; + // pool_reclaim_lines(screens[s].pool, screens[s].line_list); pools[screens[s].pool].screen_count--; screens[s].title[0] = 0; screens[s].status = SCR_UNUSED; screens[s].pool = POOL_UNUSED; - screens[s].line_list = 0; screens[s].line_count = screens[s].scrollback_pos = 0; + + /* theoretically this could be 0, but as a safety net... */ + screens[s].line_list = (line_t *)END_MARKER; } void render_vis_buf(void) { |
