From c5efc3dccc7769b48832e6f1b75bbabf36b50c52 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 9 Sep 2011 23:59:13 +0000 Subject: [PATCH] Allow NULL for cterm at exit... --- src/conio/cterm.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/conio/cterm.c b/src/conio/cterm.c index 619068124d..97bc35f925 100644 --- a/src/conio/cterm.c +++ b/src/conio/cterm.c @@ -2538,26 +2538,28 @@ void cterm_end(struct cterminal *cterm) { int i; - cterm_closelog(cterm); + if(cterm) { + cterm_closelog(cterm); #ifdef CTERM_WITHOUT_CONIO - FREE_AND_NULL(BD->vmem); - FREE_AND_NULL(BD); + FREE_AND_NULL(BD->vmem); + FREE_AND_NULL(BD); #else - for(i=CONIO_FIRST_FREE_FONT; i < 256; i++) { - FREE_AND_NULL(conio_fontdata[i].eight_by_sixteen); - FREE_AND_NULL(conio_fontdata[i].eight_by_fourteen); - FREE_AND_NULL(conio_fontdata[i].eight_by_eight); - FREE_AND_NULL(conio_fontdata[i].desc); - } + for(i=CONIO_FIRST_FREE_FONT; i < 256; i++) { + FREE_AND_NULL(conio_fontdata[i].eight_by_sixteen); + FREE_AND_NULL(conio_fontdata[i].eight_by_fourteen); + FREE_AND_NULL(conio_fontdata[i].eight_by_eight); + FREE_AND_NULL(conio_fontdata[i].desc); + } #endif - if(cterm->playnote_thread_running) { - if(sem_trywait(&cterm->playnote_thread_terminated)==-1) { - listSemPost(&cterm->notes); - sem_wait(&cterm->playnote_thread_terminated); + if(cterm->playnote_thread_running) { + if(sem_trywait(&cterm->playnote_thread_terminated)==-1) { + listSemPost(&cterm->notes); + sem_wait(&cterm->playnote_thread_terminated); + } + sem_destroy(&cterm->playnote_thread_terminated); + sem_destroy(&cterm->note_completed_sem); + listFree(&cterm->notes); } - sem_destroy(&cterm->playnote_thread_terminated); - sem_destroy(&cterm->note_completed_sem); - listFree(&cterm->notes); + free(cterm); } - free(cterm); } -- GitLab