diff --git a/src/sbbs3/js_user.c b/src/sbbs3/js_user.c index ccd8efcdc1aac5417fe73f80a6e85ef9c4c34f2c..9df83372aa87497e17aedca339a589a2e292a89b 100644 --- a/src/sbbs3/js_user.c +++ b/src/sbbs3/js_user.c @@ -886,16 +886,20 @@ js_user_constructor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval if(!js_DefineSyncProperties(cx, obj, js_user_properties)) return(JS_FALSE); - if(!js_DefineSyncMethods(cx, obj, js_user_functions, FALSE)) - return(JS_FALSE); - if((p=(private_t*)malloc(sizeof(private_t)))==NULL) return(JS_FALSE); p->cfg = scfg; p->usernumber = user.number; - JS_SetPrivate(cx, obj, p); + JS_SetPrivate(cx, obj, p); /* Must do this before calling js_DefineSyncMethods() */ + + if(!js_DefineSyncMethods(cx, obj, js_user_functions, FALSE)) { + JS_SetPrivate(cx, obj, NULL); + free(p); + return(JS_FALSE); + } + JS_SetPrivate(cx, statsobj, p); JS_SetPrivate(cx, securityobj, p);