From 03d01bb1d6290c8c80e61a5d456f461e2ad65ed4 Mon Sep 17 00:00:00 2001 From: Tiago de Paula Date: Sat, 31 Jan 2026 20:54:52 -0300 Subject: [PATCH] fix: call stack size exceeded The spread operator will place the arguments, which can reach the call stack limit if too many messages are being sent. This fix uses `.concat()` to avoid the spread operator. Fixes #5022 --- client/js/socket-events/more.ts | 2 +- server/models/chan.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/js/socket-events/more.ts b/client/js/socket-events/more.ts index a044b9fa..7e3060c9 100644 --- a/client/js/socket-events/more.ts +++ b/client/js/socket-events/more.ts @@ -22,7 +22,7 @@ socket.on("more", async (data) => { ); channel.moreHistoryAvailable = data.totalMessages > channel.messages.length + data.messages.length; - channel.messages.unshift(...data.messages); + channel.messages = data.messages.concat(channel.messages); await nextTick(); channel.historyLoading = false; diff --git a/server/models/chan.ts b/server/models/chan.ts index 8034e520..7ed0e805 100644 --- a/server/models/chan.ts +++ b/server/models/chan.ts @@ -299,7 +299,7 @@ class Chan { return; } - this.messages.unshift(...messages); + this.messages = messages.concat(this.messages); if (!this.firstUnread) { this.firstUnread = messages[messages.length - 1].id;