Skip to content
Snippets Groups Projects
Commit 05fbccb8 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Have js_execfile() save/restore callbacks

This should allow callbacks to not interfere between (say) shells
and doors.
parent 8512b601
No related branches found
No related tags found
No related merge requests found
......@@ -560,6 +560,11 @@ long sbbs_t::js_execfile(const char *cmd, const char* startup_dir, JSObject* sco
jsval old_js_argc = JSVAL_VOID;
jsval rval;
int32 result=0;
struct js_event_list *events;
struct js_runq_entry *rq_head;
struct js_runq_entry *rq_tail;
struct js_listener_entry *listeners;
if(js_cx == NULL)
js_cx = this->js_cx;
......@@ -682,6 +687,14 @@ long sbbs_t::js_execfile(const char *cmd, const char* startup_dir, JSObject* sco
#endif
}
js_PrepareToExecute(js_cx, js_glob, path, startup_dir, js_scope);
events = js_callback.events;
js_callback.events = NULL;
rq_head = js_callback.rq_head;
js_callback.rq_head = NULL;
rq_tail = js_callback.rq_tail;
js_callback.rq_tail = NULL;
listeners = js_callback.listeners;
js_callback.listeners = NULL;
JS_ExecuteScript(js_cx, js_scope, js_script, &rval);
js_handle_events(js_cx, &js_callback, &terminated);
sys_status &=~ SS_ABORT;
......@@ -715,6 +728,11 @@ long sbbs_t::js_execfile(const char *cmd, const char* startup_dir, JSObject* sco
JS_GC(js_cx);
js_callback.events = events;
js_callback.rq_head = rq_head;
js_callback.rq_tail = rq_tail;
js_callback.listeners = listeners;
JS_ENDREQUEST(js_cx);
return(result);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment