diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp
index 205e49b5d72396a0e01d0f34acdb17fb7e493337..9fa989eac100d545254fd88068aab476b495bd20 100644
--- a/src/sbbs3/js_bbs.cpp
+++ b/src/sbbs3/js_bbs.cpp
@@ -3772,10 +3772,16 @@ js_show_msg_header(JSContext *cx, uintN argc, jsval *arglist)
 		if(JSVAL_IS_OBJECT(argv[n]) && !JSVAL_IS_NULL(argv[n])) {
 			if((hdrobj=JSVAL_TO_OBJECT(argv[n]))==NULL) {
 				JS_ReportError(cx, "invalid object argument");
+				free(subject);
+				free(from);
+				free(to);
 				return JS_FALSE;
 			}
 			if(!js_GetMsgHeaderObjectPrivates(cx, hdrobj, &smb, &msg, NULL)) {
 				JS_ReportError(cx, "msg hdr object lacks privates");
+				free(subject);
+				free(from);
+				free(to);
 				return JS_FALSE;
 			}
 		} else if(JSVAL_IS_STRING(argv[n])) {
@@ -3794,9 +3800,9 @@ js_show_msg_header(JSContext *cx, uintN argc, jsval *arglist)
 		sbbs->show_msghdr(smb, msg, subject, from, to);
 		JS_RESUMEREQUEST(cx, rc);
 	}
-	FREE_AND_NULL(subject);
-	FREE_AND_NULL(from);
-	FREE_AND_NULL(to);
+	free(subject);
+	free(from);
+	free(to);
 
 	return JS_TRUE;
 }