diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index 84d9d303b8f2370921df1509af4843fc54d6df5b..fd4fd8d56680773d00c4fe405323ce11eb1653fd 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -715,15 +715,17 @@ long js_exec(const char *fname, char** args)
 	long double	diff;
 
 	if(fname!=NULL) {
-		if(strcspn(fname,"/\\")==strlen(fname)) {
+		if(isfullpath(fname)) {
+			SAFECOPY(path,fname);
+		}
+		else {
 			SAFEPRINTF3(path,"%s%s%s",orig_cwd,fname,js_ext(fname));
 			if(!fexistcase(path)) {
 				SAFEPRINTF3(path,"%s%s%s",scfg.mods_dir,fname,js_ext(fname));
 				if(scfg.mods_dir[0]==0 || !fexistcase(path))
 					SAFEPRINTF3(path,"%s%s%s",scfg.exec_dir,fname,js_ext(fname));
 			}
-		} else
-			SAFECOPY(path,fname);
+		}
 
 		if(!fexistcase(path)) {
 			lprintf(LOG_ERR,"!Module file (%s) doesn't exist",path);