From 1a030f6e04fd4600618480b42978dfce410ed316 Mon Sep 17 00:00:00 2001 From: Dan Pascu Date: Fri, 20 Dec 2024 11:43:56 +0200 Subject: [PATCH] fix(vim.system): invalid MAX_TIMEOUT for 32-bit systems #31638 The maximum signed value on 32-bit systems is 2 ^ 31 - 1. When using 2 ^ 31 for the default timeout, the value would overflow on such systems resulting in a negative value, which caused a stack trace when calling wait() without a timeout. (cherry picked from commit 4e130c1ee446f4389a8c76c5e81b53bff8b9193c) --- runtime/lua/vim/_system.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/lua/vim/_system.lua b/runtime/lua/vim/_system.lua index d603971495..e7c380eb84 100644 --- a/runtime/lua/vim/_system.lua +++ b/runtime/lua/vim/_system.lua @@ -88,7 +88,8 @@ function SystemObj:_timeout(signal) self:kill(signal or SIG.TERM) end -local MAX_TIMEOUT = 2 ^ 31 +-- Use max 32-bit signed int value to avoid overflow on 32-bit systems. #31633 +local MAX_TIMEOUT = 2 ^ 31 - 1 --- @param timeout? integer --- @return vim.SystemCompleted