diff --git a/src/sbbs3/js_msg_area.cpp b/src/sbbs3/js_msg_area.cpp index 05fbb31e227e4829db3065b946b51dea548b3e06..cce287b340c3e93ddad034f9b3d80498e4ebfaf8 100644 --- a/src/sbbs3/js_msg_area.cpp +++ b/src/sbbs3/js_msg_area.cpp @@ -106,11 +106,11 @@ struct js_msg_area_priv { subscan_t *subscan; }; -BOOL DLLCALL js_CreateMsgAreaProperties(JSContext* cx, scfg_t* cfg, JSObject* subobj, uint subnum) +BOOL DLLCALL js_CreateMsgAreaProperties(JSContext* cx, scfg_t* cfg, JS::HandleObject subobj, uint subnum) { char str[128]; - JSString* js_str; - JS::Value val; + JS::RootedString js_str(cx); + JS::RootedValue val(cx); sub_t* sub; if(subnum==INVALID_SUB || subnum>=cfg->total_subs) @@ -118,128 +118,128 @@ BOOL DLLCALL js_CreateMsgAreaProperties(JSContext* cx, scfg_t* cfg, JSObject* su sub=cfg->sub[subnum]; - if(!JS_DefineProperty(cx, subobj, "number", INT_TO_JSVAL(subnum) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "number", subnum + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "grp_number", INT_TO_JSVAL(sub->grp) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "grp_number", sub->grp + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, cfg->grp[sub->grp]->sname))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "grp_name", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "grp_name", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->code))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "code", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "code", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->sname))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "name", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "name", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->lname))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "description", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "description", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->qwkname))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "qwk_name", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "qwk_name", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, subnewsgroupname(cfg, sub, str, sizeof(str))))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "newsgroup", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "newsgroup", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->arstr))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "ars", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "ars", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->read_arstr))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "read_ars", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "read_ars", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->post_arstr))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "post_ars", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "post_ars", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->op_arstr))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "operator_ars", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "operator_ars", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->mod_arstr))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "moderated_ars", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "moderated_ars", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->data_dir))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "data_dir", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "data_dir", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->origline))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "fidonet_origin", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "fidonet_origin", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); if((js_str=JS_NewStringCopyZ(cx, sub->tagline))==NULL) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "qwknet_tagline", STRING_TO_JSVAL(js_str) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "qwknet_tagline", js_str + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - val=UINT_TO_JSVAL(sub->misc); + val.setNumber(sub->misc); if(!JS_DefineProperty(cx, subobj, "settings", val - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "ptridx", INT_TO_JSVAL(sub->ptridx) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "ptridx", sub->ptridx + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "qwk_conf", INT_TO_JSVAL(sub->qwkconf) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "qwk_conf", sub->qwkconf + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "max_crcs", INT_TO_JSVAL(sub->maxcrcs) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "max_crcs", sub->maxcrcs + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "max_msgs", INT_TO_JSVAL(sub->maxmsgs) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "max_msgs", sub->maxmsgs + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "max_age", INT_TO_JSVAL(sub->maxage) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "max_age", sub->maxage + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "print_mode", INT_TO_JSVAL(sub->pmode) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "print_mode", sub->pmode + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if(!JS_DefineProperty(cx, subobj, "print_mode_neg", INT_TO_JSVAL(sub->n_pmode) - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + if(!JS_DefineProperty(cx, subobj, "print_mode_neg", sub->n_pmode + ,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); @@ -262,43 +262,43 @@ enum { static bool js_sub_get(JSContext *cx, JS::HandleObject obj, JS::HandleId id, JS::MutableHandleValue vp) { - JS::Value idval; - int tiny; + JS::RootedValue idval(cx); + int32_t tiny; subscan_t* scan; if((scan=(subscan_t*)JS_GetPrivate(obj))==NULL) return(true); - JS_IdToValue(cx, id, &idval); - tiny = JSVAL_TO_INT(idval); + JS_IdToValue(cx, id, &idval); + tiny = idval.toInt32(); switch(tiny) { case SUB_PROP_SCAN_PTR: - vp.set(UINT_TO_JSVAL(scan->ptr)); + vp.setNumber((unsigned)scan->ptr); break; case SUB_PROP_SCAN_CFG: - vp.set(UINT_TO_JSVAL(scan->cfg)); + vp.setNumber((unsigned)scan->cfg); break; case SUB_PROP_LAST_READ: - vp.set(UINT_TO_JSVAL(scan->last)); + vp.setNumber((unsigned)scan->last); break; } return(true); } -static bool js_sub_set(JSContext *cx, JS::HandleObject obj, JS::HandleId id, bool strict, JS::MutableHandleValue vp) +static bool js_sub_set(JSContext *cx, JS::HandleObject obj, JS::HandleId id, JS::MutableHandleValue vp, JS::ObjectOpResult &result) { - JS::Value idval; + JS::RootedValue idval(cx); int32_t val=0; - int tiny; + int32_t tiny; subscan_t* scan; if((scan=(subscan_t*)JS_GetPrivate(obj))==NULL) return(true); - JS_IdToValue(cx, id, &idval); - tiny = JSVAL_TO_INT(idval); + JS_IdToValue(cx, id, &idval); + tiny = idval.toInt32(); switch(tiny) { case SUB_PROP_SCAN_PTR: @@ -504,29 +504,6 @@ bool DLLCALL js_msg_area_resolve(JSContext* cx, JS::HandleObject areaobj, JS::Ha if((subobj=JS_NewObject(cx, &js_sub_class, subobj_proto, NULL))==NULL) return false; -/** Crash ^^^ Here in JSexec/ircd upon recycle/reload of script: - - mozjs185-1.0.dll!62e4a968() - [Frames below may be incorrect and/or missing, no symbols loaded for mozjs185-1.0.dll] - mozjs185-1.0.dll!62eda4b2() - mozjs185-1.0.dll!62e9cd4e() - mozjs185-1.0.dll!62ea3cf0() - mozjs185-1.0.dll!62e4e39e() - mozjs185-1.0.dll!62edd884() - mozjs185-1.0.dll!62e8010f() - mozjs185-1.0.dll!62e5b0c9() - mozjs185-1.0.dll!62e4b1ee() -> sbbs.dll!js_CreateMsgAreaObject(JSContext * cx=0x07b33ce8, JSObject * parent=0x0a37f028, scfg_t * cfg=0x004a2b20, user_t * user=0x00000000, client_t * client=0x00000000, subscan_t * subscan=0x00000000) Line 459 + 0x17 bytes C - sbbs.dll!js_CreateUserObjects(JSContext * cx=0x07b33ce8, JSObject * parent=0x0a37f028, scfg_t * cfg=0x004a2b20, user_t * user=0x00000000, client_t * client=0x00000000, char * html_index_file=0x00000000, subscan_t * subscan=0x00000000) Line 1431 + 0x1d bytes C - sbbs.dll!js_CreateCommonObjects(JSContext * js_cx=0x07b33ce8, scfg_t * cfg=0x004a2b20, scfg_t * node_cfg=0x004a2b20, jsSyncMethodSpec * methods=0x00000000, __int64 uptime=0, char * host_name=0x101bdaa6, char * socklib_desc=0x101bdaa6, js_branch_t * branch=0x019c8f30, js_startup_t * js_startup=0x0012f7cc, client_t * client=0x00000000, unsigned int client_socket=4294967295, js_server_props_t * props=0x00000000) Line 3858 + 0x1b bytes C - sbbs.dll!js_load(JSContext * cx=0x02e36300, unsigned int argc=3, unsigned __int64 * arglist=0x01d700d0) Line 282 + 0x44 bytes C - mozjs185-1.0.dll!62e91dfd() - jsexec.exe!__lock_fhandle(int fh=1240564) Line 467 C - 7ffdf000() - ffff0007() - mozjs185-1.0.dll!62fe9c60() - -*/ if(p->subscan!=NULL) JS_SetPrivate(subobj,&p->subscan[d]); diff --git a/src/sbbs3/objects.mk b/src/sbbs3/objects.mk index 358d72390535e67ee0813bc4589f8acb4ac52cb0..06c8f6a468a848e459e7fc2f5b45c953e4166845 100644 --- a/src/sbbs3/objects.mk +++ b/src/sbbs3/objects.mk @@ -40,7 +40,6 @@ OBJS = $(MTOBJODIR)$(DIRSEP)ansiterm$(OFILE) \ $(MTOBJODIR)$(DIRSEP)getstr$(OFILE)\ $(MTOBJODIR)$(DIRSEP)inkey$(OFILE)\ $(MTOBJODIR)$(DIRSEP)ident$(OFILE)\ - $(MTOBJODIR)$(DIRSEP)js_private$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_bbs$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_client$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_com$(OFILE)\ @@ -54,6 +53,7 @@ OBJS = $(MTOBJODIR)$(DIRSEP)ansiterm$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_internal$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_msg_area$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_msgbase$(OFILE)\ + $(MTOBJODIR)$(DIRSEP)js_private$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_queue$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_request$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_rtpool$(OFILE)\ @@ -246,7 +246,6 @@ JSDOOR_OBJS = \ $(MTOBJODIR)$(DIRSEP)date_str$(OFILE) \ $(MTOBJODIR)$(DIRSEP)dat_rec$(OFILE) \ $(MTOBJODIR)$(DIRSEP)jsdoor$(OFILE) \ - $(MTOBJODIR)$(DIRSEP)js_private$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_uifc$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_conio$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_request$(OFILE) \ @@ -258,6 +257,7 @@ JSDOOR_OBJS = \ $(MTOBJODIR)$(DIRSEP)js_cryptcert$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_cryptkeyset$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_global$(OFILE) \ + $(MTOBJODIR)$(DIRSEP)js_private$(OFILE)\ $(MTOBJODIR)$(DIRSEP)js_rtpool$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_sprintf$(OFILE) \ $(MTOBJODIR)$(DIRSEP)js_file$(OFILE) \