diff --git a/src/sbbs3/putmsg.cpp b/src/sbbs3/putmsg.cpp
index 42e15608b97ce74037096367f8b850475fac15b7..548e04afbf1f84575f56173b1c342e2fbb5f8aef 100644
--- a/src/sbbs3/putmsg.cpp
+++ b/src/sbbs3/putmsg.cpp
@@ -51,6 +51,7 @@
 char sbbs_t::putmsg(const char *buf, long mode)
 {
 	char	tmpatr,tmp2[256],tmp3[128];
+	char	ret;
 	char*	str=(char*)buf;
 	uchar	exatr=0;
 	int 	orgcon=console,i;
@@ -292,12 +293,13 @@ char sbbs_t::putmsg(const char *buf, long mode)
 			pause();
 	}
 
+	ret=str[l];
 	if(str!=buf)	/* malloc'd copy of buffer */
 		free(str);
 
 	/* Restore original settings of Forced Pause On/Off */
 	sys_status&=~(SS_PAUSEOFF|SS_PAUSEON);
 	sys_status|=(sys_status_sav&(SS_PAUSEOFF|SS_PAUSEON));
-	return(str[l]);
+	return(ret);
 }