From a8961f2a9502898fd8f1f4e56135d29e0322c99a Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 18 Nov 2004 21:25:31 +0000
Subject: [PATCH] Bugfix: js_CreateGlobalObjects() needed to create the
 "system" object using a node-specific scfg_t*, so the node_dir and temp_dir
 properties had the correct values.

---
 src/sbbs3/js_global.c | 9 +++++++--
 src/sbbs3/jsexec.c    | 2 +-
 src/sbbs3/main.cpp    | 2 +-
 src/sbbs3/sbbs.h      | 1 +
 4 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index 2c811de975..1bf44214c2 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -192,7 +192,8 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 			return(JS_FALSE);
 
 		if((bg->obj=js_CreateGlobalObjects(bg->cx
-				,cfg
+				,cfg			/* common config */
+				,NULL			/* node-specific config */
 				,NULL			/* additional global methods */
 				,0				/* uptime */
 				,""				/* hostname */
@@ -2754,6 +2755,7 @@ JSObject* DLLCALL js_CreateGlobalObject(JSContext* cx, scfg_t* cfg, jsSyncMethod
 
 JSObject* DLLCALL js_CreateGlobalObjects(JSContext* js_cx
 										,scfg_t* cfg				/* common */
+										,scfg_t* node_cfg			/* node-specific */
 										,jsSyncMethodSpec* methods	/* global */
 										,time_t uptime				/* system */
 										,char* host_name			/* system */
@@ -2765,12 +2767,15 @@ JSObject* DLLCALL js_CreateGlobalObjects(JSContext* js_cx
 {
 	JSObject*	js_glob;
 
+	if(node_cfg==NULL)
+		node_cfg=cfg;
+
 	/* Global Object */
 	if((js_glob=js_CreateGlobalObject(js_cx, cfg, methods))==NULL)
 		return(NULL);
 
 	/* System Object */
-	if(js_CreateSystemObject(js_cx, js_glob, cfg, uptime, host_name, socklib_desc)==NULL)
+	if(js_CreateSystemObject(js_cx, js_glob, node_cfg, uptime, host_name, socklib_desc)==NULL)
 		return(NULL);
 
 	/* Internal JS Object */
diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index f0b64cb338..35a0fdeb33 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -534,7 +534,7 @@ static BOOL js_init(char** environ)
 	JS_SetErrorReporter(js_cx, js_ErrorReporter);
 
 	/* Global Object */
-	if((js_glob=js_CreateGlobalObjects(js_cx, &scfg, js_global_functions
+	if((js_glob=js_CreateGlobalObjects(js_cx, &scfg, NULL, js_global_functions
 		,time(NULL), host_name, SOCKLIB_DESC	/* system */
 		,&branch								/* js */
 		,NULL,INVALID_SOCKET					/* client */
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 0f1e28a0dd..faef5ab006 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -884,7 +884,7 @@ bool sbbs_t::js_init()
 		JS_SetContextPrivate(js_cx, this);	/* Store a pointer to sbbs_t instance */
 
 		/* Global Objects (including system, js, client, Socket, MsgBase, File, User, etc. */
-		if((js_glob=js_CreateGlobalObjects(js_cx, &scfg, js_global_functions
+		if((js_glob=js_CreateGlobalObjects(js_cx, &scfg, &cfg, js_global_functions
 					,uptime, startup->host_name, SOCKLIB_DESC	/* system */
 					,&js_branch									/* js */
 					,&client, client_socket						/* client */
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index e0b4946dc8..353e3798f1 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -949,6 +949,7 @@ extern "C" {
 	DLLEXPORT JSObject* DLLCALL js_CreateGlobalObject(JSContext* cx, scfg_t* cfg, jsSyncMethodSpec* methods);
 	DLLEXPORT JSObject*	DLLCALL js_CreateGlobalObjects(JSContext* cx
 													,scfg_t* cfg				/* common */
+													,scfg_t* node_cfg			/* node-specific */
 													,jsSyncMethodSpec* methods	/* global */
 													,time_t uptime				/* system */
 													,char* host_name			/* system */
-- 
GitLab