From 2bfd96c9e0134e12cc69af95cbe9f416b1ad0f47 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Mon, 16 Feb 2026 00:45:59 -0700 Subject: [PATCH] Fix vsnprintf handling for MSVC compiler Add handling for MSVC's vsnprintf behavior --- src/common/sysinfo/win32/backend.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/common/sysinfo/win32/backend.c b/src/common/sysinfo/win32/backend.c index be6df1b9..b2ed3ab8 100644 --- a/src/common/sysinfo/win32/backend.c +++ b/src/common/sysinfo/win32/backend.c @@ -588,7 +588,16 @@ static char *zoitechat_strdup_printf (const char *format, ...) va_start (args, format); va_copy (args_copy, args); + /* + * MSVC's debug CRT treats vsnprintf(NULL, 0, ...) as an invalid parameter, + * which triggers a fatal runtime exception via ucrtbased.dll. Use + * _vscprintf() to determine required output length on that toolchain. + */ +#ifdef _MSC_VER + length = _vscprintf (format, args_copy); +#else length = vsnprintf (NULL, 0, format, args_copy); +#endif va_end (args_copy); if (length < 0)