diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 5dca2d092d4783af3674c29fd67fd5dfd1e99ed7..094a77ce695ae427c70c90b21d36e959f11595c9 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -40,7 +40,9 @@ #ifdef JAVASCRIPT -static scfg_t* scfg=NULL; +static scfg_t* scfg=NULL; +static JSObject* idx_proto=NULL; +static JSObject* hdr_proto=NULL; typedef struct { @@ -607,7 +609,12 @@ js_get_msg_index(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r } } - if((idxobj=JS_NewObject(cx,NULL,NULL,obj))==NULL) + if(idx_proto==NULL) { + if((idx_proto=JS_NewObject(cx,NULL,NULL,obj))==NULL) + return(JS_TRUE); + } + + if((idxobj=JS_NewObject(cx,NULL,idx_proto,obj))==NULL) return(JS_TRUE); JS_NewNumberValue(cx, msg.idx.number ,&val); @@ -1031,7 +1038,12 @@ js_get_msg_header(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * if((p->msg).hdr.number==0) /* No valid message number/id/offset specified */ return(JS_TRUE); - if((hdrobj=JS_NewObject(cx,&js_msghdr_class,NULL,obj))==NULL) { + if(hdr_proto==NULL) { + if((hdr_proto=JS_NewObject(cx,NULL,NULL,obj))==NULL) + return(JS_TRUE); + } + + if((hdrobj=JS_NewObject(cx,&js_msghdr_class,hdr_proto,obj))==NULL) { smb_freemsgmem(&(p->msg)); return(JS_TRUE); }