diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index a6a971cc3eb318fa0402632eaad001e4c9e16e76..f08db680c2196e9bb6a0aa2f9c6c9bf156561524 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -350,14 +350,17 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) path[0]=0; /* Empty path, indicates load file not found (yet) */ + JS_RESUMEREQUEST(cx, rc); if(JS_GetProperty(cx, obj, "js", &val) && val!=JSVAL_VOID && JSVAL_IS_OBJECT(val)) { JSObject* js_obj = JSVAL_TO_OBJECT(val); /* if js.exec_dir is defined (location of executed script), search their first */ if(JS_GetProperty(cx, js_obj, "exec_dir", &val) && val!=JSVAL_VOID && JSVAL_IS_STRING(val)) { SAFEPRINTF2(path,"%s%s",js_ValueToStringBytes(cx, val, NULL),filename); + rc=JS_SUSPENDREQUEST(cx); if(!fexistcase(path)) path[0]=0; + JS_RESUMEREQUEST(cx, rc); } if(JS_GetProperty(cx, js_obj, JAVASCRIPT_LOAD_PATH_LIST, &val) && val!=JSVAL_VOID && JSVAL_IS_OBJECT(val)) js_load_list = JSVAL_TO_OBJECT(val); @@ -374,6 +377,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(prefix[0]==0) continue; backslash(prefix); + rc=JS_SUSPENDREQUEST(cx); if(isfullpath(prefix)) { SAFEPRINTF2(path,"%s%s",prefix,filename); if(!fexistcase(path)) @@ -384,9 +388,11 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(!fexistcase(path)) path[0]=0; } + JS_RESUMEREQUEST(cx, rc); } } } + rc=JS_SUSPENDREQUEST(cx); /* if mods_dir is defined, search there next */ if(path[0]==0 && p->cfg->mods_dir[0]!=0) { SAFEPRINTF2(path,"%s%s",p->cfg->mods_dir,filename); @@ -399,9 +405,13 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) char prefix[MAX_PATH+1]; for(i=0;path[0]==0;i++) { - if(!JS_GetElement(cx, js_load_list, i, &val) || val==JSVAL_VOID) + JS_RESUMEREQUEST(cx, rc); + if(!JS_GetElement(cx, js_load_list, i, &val) || val==JSVAL_VOID) { + rc=JS_SUSPENDREQUEST(cx); break; + } SAFECOPY(prefix,js_ValueToStringBytes(cx, val, NULL)); + rc=JS_SUSPENDREQUEST(cx); if(prefix[0]==0) continue; backslash(prefix);