diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index a5cb40c7d83633391099f9d197924ce1bbd6ff73..d1cdab065b7c2c9afef3536e7fd4b797daec2f3a 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -349,7 +349,14 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 		path[0]=0;
 		if(JS_GetProperty(cx, obj, "js", &val) && JSVAL_IS_OBJECT(val)) {
 			JSObject* js = JSVAL_TO_OBJECT(val);
-			if(JS_GetProperty(cx, js, JAVASCRIPT_LOAD_PATH_LIST, &val) && JSVAL_IS_OBJECT(val)) {
+			if(JS_GetProperty(cx, js, "exec_dir", &val) && JSVAL_IS_STRING(val)) {
+				SAFEPRINTF2(path,"%s%s",js_ValueToStringBytes(cx, val, NULL),filename);
+				if(!fexistcase(path))
+					path[0]=0;
+			}
+			if(path[0]==0
+				&& JS_GetProperty(cx, js, JAVASCRIPT_LOAD_PATH_LIST, &val) 
+				&& JSVAL_IS_OBJECT(val)) {
 				JSObject*	list = JSVAL_TO_OBJECT(val);
 				jsuint		i;
 				char		prefix[MAX_PATH+1];