From c68849a5299aa17791e7efc148f7bae6d01d0da2 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Tue, 17 Sep 2019 05:29:55 +0000
Subject: [PATCH] Do not re-create the result arrays for each socket that's
 read (derp). This only impacts the new socket_select() method with multiple
 arrays.

---
 src/sbbs3/js_global.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index b9e832ff5e..c6c8929aca 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -3779,15 +3779,15 @@ js_socket_select(JSContext *cx, uintN argc, jsval *arglist)
 			for (j = 0; j < inarray_cnt; j++) {
 				if (limit[j] > 0) {
 					len = 0;
+					JS_RESUMEREQUEST(cx, rc);
+					if((rarray = JS_NewArrayObject(cx, 0, NULL))==NULL)
+						return(JS_FALSE);
+					val = OBJECT_TO_JSVAL(rarray);
+					if (!JS_SetProperty(cx, robj, props[j], &val))
+						return JS_FALSE;
+					rc=JS_SUSPENDREQUEST(cx);
 					for(i=0;i<limit[j];i++) {
 						JS_RESUMEREQUEST(cx, rc);
-						if((rarray = JS_NewArrayObject(cx, 0, NULL))==NULL)
-							return(JS_FALSE);
-						val = OBJECT_TO_JSVAL(rarray);
-						if (!JS_SetProperty(cx, robj, props[j], &val)) {
-							rc=JS_SUSPENDREQUEST(cx);
-							return JS_FALSE;
-						}
 						if(!JS_GetElement(cx, inarray[j], i, &val)) {
 							rc=JS_SUSPENDREQUEST(cx);
 							break;
-- 
GitLab