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