diff --git a/src/sbbs3/qwktomsg.cpp b/src/sbbs3/qwktomsg.cpp
index ac6dc1ab6f9200c2e1606a2f06f7c895cc074875..485addc3a2b0f69e479c979663bde1e6e4b1db50 100644
--- a/src/sbbs3/qwktomsg.cpp
+++ b/src/sbbs3/qwktomsg.cpp
@@ -257,14 +257,14 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum
 			p=header+5; 					/* Skip "@VIA:" */
 			while(*p && *p<=' ') p++;		/* Skip any spaces */
 			if(route_circ(p,cfg.sys_id)) {
-				free(header);
-				free(body);
-				free(tail);
 				smb_freemsgmem(&msg);
 				bprintf("\r\nCircular message path: %s\r\n",p);
 				sprintf(str,"Circular message path: %s from %s"
 					,p,fromhub ? cfg.qhub[fromhub-1]->id:useron.alias);
 				errorlog(str);
+				free(header);
+				free(body);
+				free(tail);
 				return(false); 
 			}
 			sprintf(str,"%s/%s"