From 72ed341337c022f313756a6ed65d30b770eadead Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows)" <rob@synchro.net>
Date: Sun, 23 Apr 2023 18:56:46 -0700
Subject: [PATCH] Fix: some file_area properties weren't automatically created
 when enumerated

user_dir, sysop_dir, upload_dir, and offline_dir

These properties could magically appear later once
file_area.[lib|dir|lib_list] was enumerated for the first time.
---
 src/sbbs3/js_file_area.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/js_file_area.c b/src/sbbs3/js_file_area.c
index 54c6d99d8f..5df2bccee8 100644
--- a/src/sbbs3/js_file_area.c
+++ b/src/sbbs3/js_file_area.c
@@ -250,7 +250,9 @@ JSBool js_file_area_resolve(JSContext* cx, JSObject* areaobj, jsid id)
 	js_CreateArrayOfStrings(cx, areaobj, "_property_desc_list", file_area_prop_desc, JSPROP_READONLY);
 #endif
 
-	if (name==NULL || strcmp(name, "lib")==0 || strcmp(name, "dir")==0 || strcmp(name, "lib_list")==0) {
+	if (name==NULL || strcmp(name, "lib")==0 || strcmp(name, "dir")==0 || strcmp(name, "lib_list")==0
+		|| strcmp(name, "user_dir")==0 || strcmp(name, "sysop_dir")==0 || strcmp(name, "upload_dir")==0
+		|| strcmp(name, "offline_dir")==0) {
 		if(name)
 			FREE_AND_NULL(name);
 		if((alllibs=JS_NewObject(cx, NULL, NULL, areaobj))==NULL)
@@ -393,7 +395,7 @@ JSBool js_file_area_resolve(JSContext* cx, JSObject* areaobj, jsid id)
 						,NULL,NULL,JSPROP_READONLY))
 					return JS_FALSE;
 
-				if(d==p->cfg->upload_dir 
+				if(d==p->cfg->upload_dir
 					&& !JS_DefineProperty(cx, areaobj, "upload_dir", val
 						,NULL,NULL,JSPROP_READONLY))
 					return JS_FALSE;
-- 
GitLab