diff --git a/src/sbbs3/js_filebase.c b/src/sbbs3/js_filebase.c
index 1bf74cc00b8cc15379d6ed669d345fda5102e3b3..af362dedc0f1e80bc46f58a14bd0f35558a71198 100644
--- a/src/sbbs3/js_filebase.c
+++ b/src/sbbs3/js_filebase.c
@@ -1330,18 +1330,18 @@ js_update_file(JSContext *cx, uintN argc, jsval *arglist)
 				if(file.extdesc != NULL)
 					truncsp(file.extdesc);
 				if(!readd_always && strcmp(extdesc ? extdesc : "", file.extdesc ? file.extdesc : "") == 0
-					&& strcmp(auxdata ? auxdata : "", file.auxdata ? file.auxdata : "") == 0)
+					&& strcmp(auxdata ? auxdata : "", file.auxdata ? file.auxdata : "") == 0) {
 					p->smb_result = smb_putfile(&p->smb, &file);
 					if(p->smb_result != SMB_SUCCESS)
 						JS_ReportError(cx, "%d writing '%s'", p->smb_result, file.name);
-				else {
+				} else {
 					if((p->smb_result = smb_removefile_by_name(&p->smb, filename)) == SMB_SUCCESS) {
 						if(readd_always)
 							file.hdr.when_imported.time = 0; // we want the file to appear as "new"
 						p->smb_result = smb_addfile(&p->smb, &file, SMB_SELFPACK, extdesc, auxdata, newfname);
 					}
 					else
-						JS_ReportError(cx, "%d removing '%s'", p->smb_result, file.name);
+						JS_ReportError(cx, "%d removing '%s'", p->smb_result, filename);
 				}
 			}
 		}
@@ -1811,7 +1811,7 @@ js_filebase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 {
 	JSObject *		obj;
 	jsval *			argv=JS_ARGV(cx, arglist);
-	char*			base = NULL;
+	char			base[MAX_PATH + 1] = "";
 	private_t*		p;
 	scfg_t*			scfg;
 
@@ -1827,15 +1827,13 @@ js_filebase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 	memset(p,0,sizeof(private_t));
 	p->smb.retry_time=scfg->smb_retry_time;
 
-	JSSTRING_TO_MSTRING(cx, JS_ValueToString(cx, argv[0]), base, NULL);
+	JSVALUE_TO_STRBUF(cx, argv[0], base, sizeof base, NULL);
 	if(JS_IsExceptionPending(cx)) {
-		if(base != NULL)
-			free(base);
 		free(p);
 		return JS_FALSE;
 	}
-	if(base==NULL) {
-		JS_ReportError(cx, "Invalid base parameter");
+	if(*base=='\0') {
+		JS_ReportError(cx, "Invalid 'code' parameter");
 		free(p);
 		return JS_FALSE;
 	}
@@ -1843,7 +1841,6 @@ js_filebase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 	if(!JS_SetPrivate(cx, obj, p)) {
 		JS_ReportError(cx,"JS_SetPrivate failed");
 		free(p);
-		free(base);
 		return JS_FALSE;
 	}
 
@@ -1864,7 +1861,6 @@ js_filebase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 		SAFECOPY(p->smb.file, base);
 	}
 
-	free(base);
 	return JS_TRUE;
 }
 
diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c
index eef2374c6bafb315995655c4889cc662106cb74f..7f6c1be5d8cc57e1b6204c96de80988f98f4bf12 100644
--- a/src/sbbs3/js_msgbase.c
+++ b/src/sbbs3/js_msgbase.c
@@ -3350,9 +3350,8 @@ js_msgbase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 {
 	JSObject *		obj;
 	jsval *			argv=JS_ARGV(cx, arglist);
-	JSString*		js_str;
 	JSObject*		cfgobj;
-	char*			base = NULL;
+	char			base[MAX_PATH + 1] = "";
 	private_t*		p;
 	scfg_t*			scfg;
 
@@ -3368,16 +3367,13 @@ js_msgbase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 	memset(p,0,sizeof(private_t));
 	p->smb.retry_time=scfg->smb_retry_time;
 
-	js_str = JS_ValueToString(cx, argv[0]);
-	JSSTRING_TO_MSTRING(cx, js_str, base, NULL);
+	JSVALUE_TO_STRBUF(cx, argv[0], base, sizeof base, NULL);
 	if(JS_IsExceptionPending(cx)) {
-		if(base != NULL)
-			free(base);
 		free(p);
 		return JS_FALSE;
 	}
-	if(base==NULL) {
-		JS_ReportError(cx, "Invalid base parameter");
+	if(*base=='\0') {
+		JS_ReportError(cx, "Invalid 'code' parameter");
 		free(p);
 		return JS_FALSE;
 	}
@@ -3387,7 +3383,6 @@ js_msgbase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 	if(!JS_SetPrivate(cx, obj, p)) {
 		JS_ReportError(cx,"JS_SetPrivate failed");
 		free(p);
-		free(base);
 		return JS_FALSE;
 	}
 
@@ -3441,7 +3436,6 @@ js_msgbase_constructor(JSContext *cx, uintN argc, jsval *arglist)
 		}
 	}
 
-	free(base);
 	return JS_TRUE;
 }