From e5cdc9a55602778b821dfc101407367fa3df1ef3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Fri, 29 Jan 2021 04:46:09 -0500
Subject: [PATCH] Ok, let's just never change cur if it's valid?  Ok?

Now the default bar is INT_MAX, so it always gets corrected when
left as default.

This is good.
---
 src/sbbs3/js_uifc.c | 1 +
 src/uifc/uifc32.c   | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/js_uifc.c b/src/sbbs3/js_uifc.c
index 73859ad91d..f0883ef4a0 100644
--- a/src/sbbs3/js_uifc.c
+++ b/src/sbbs3/js_uifc.c
@@ -346,6 +346,7 @@ static JSBool js_list_ctx_constructor(JSContext *cx, uintN argc, jsval *arglist)
 		JS_ReportError(cx, "JS_SetPrivate failed");
 		return JS_FALSE;
 	}
+	p->bar = INT_MAX;
 	js_SyncResolve(cx, obj, NULL, js_uifc_list_class_properties, NULL, NULL, 0);
 #ifdef BUILD_JSDOCS
 	js_DescribeSyncObject(cx, obj, "Class used to retain UIFC list menu context", 317);
diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index 2e1f9ac1af..53caa23d1d 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -927,11 +927,11 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 				(*bar)=opts-1;
 			if((*bar)<0)
 				(*bar)=0;
-			if((*cur)<(*bar))
-				(*cur)=(*bar);
 			i=(*cur)-(*bar);
 			if(i+(height-vbrdrsize-1)>=opts) {
 				(*bar)=(height-vbrdrsize);
+				if (*bar > *cur)
+					*bar = *cur;
 				i=(*cur)-(*bar)+1;
 			}
 		}
-- 
GitLab