diff --git a/src/sbbs3/qwk.cpp b/src/sbbs3/qwk.cpp
index d29de6d447f0e752bfd6c5d12686d30842d806be..c75333c7c9e257933e4a71f76923eb9f4f3f9b14 100644
--- a/src/sbbs3/qwk.cpp
+++ b/src/sbbs3/qwk.cpp
@@ -63,6 +63,9 @@ bool route_circ(char *via, char *id)
 {
 	char str[256],*p,*sp;
 
+	if(via==NULL || id==NULL)
+		return(false);
+
 	SAFECOPY(str,via);
 	p=str;
 	SKIP_WHITESPACE(p);
@@ -985,13 +988,12 @@ int sbbs_t::set_qwk_flag(ulong flag)
 	int i;
 	char str[32];
 
+	if(useron.qwk&flag)
+		return 0;
 	if((i=getuserrec(&cfg,useron.number,U_QWK,8,str))!=0)
 		return(i);
 	useron.qwk=ahtoul(str);
 	useron.qwk|=flag;
-	if((i=putuserrec(&cfg,useron.number,U_QWK,8,ultoa(useron.qwk,str,16)))!=0)
-		return(i);
-
-	return(0);
+	return putuserrec(&cfg,useron.number,U_QWK,8,ultoa(useron.qwk,str,16));
 }