From 4d44e3ceb3a3dd090093940b276281939fcbabab Mon Sep 17 00:00:00 2001 From: Angel Castillo Date: Fri, 29 Nov 2024 03:04:40 +0800 Subject: [PATCH] fix: use compliant vasprintf on mingw32 environments in json-c --- lib/external/json-c/vasprintf_compat.h | 66 +++++++++++++------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/lib/external/json-c/vasprintf_compat.h b/lib/external/json-c/vasprintf_compat.h index 59b2e960..80537deb 100644 --- a/lib/external/json-c/vasprintf_compat.h +++ b/lib/external/json-c/vasprintf_compat.h @@ -14,53 +14,53 @@ #include #include -#if !defined(HAVE_VASPRINTF) +#if defined(__MINGW32__) || !defined(HAVE_VASPRINTF) /* CAW: compliant version of vasprintf */ static int vasprintf(char **buf, const char *fmt, va_list ap) { #ifndef WIN32 - static char _T_emptybuffer = '\0'; - va_list ap2; + static char _T_emptybuffer = '\0'; + va_list ap2; #endif /* !defined(WIN32) */ - int chars; - char *b; + int chars; + char *b; - if (!buf) - { - return -1; - } + if (!buf) + { + return -1; + } #ifdef WIN32 - chars = _vscprintf(fmt, ap); + chars = _vscprintf(fmt, ap); #else /* !defined(WIN32) */ - /* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite + /* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite * our buffer like on some 64bit sun systems... but hey, it's time to move on - */ - va_copy(ap2, ap); - chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap2); - va_end(ap2); + */ + va_copy(ap2, ap); + chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap2); + va_end(ap2); #endif /* defined(WIN32) */ - if (chars < 0 || (size_t)chars + 1 > SIZE_MAX / sizeof(char)) - { - return -1; - } + if (chars < 0 || (size_t)chars + 1 > SIZE_MAX / sizeof(char)) + { + return -1; + } - b = (char *)malloc(sizeof(char) * ((size_t)chars + 1)); - if (!b) - { - return -1; - } + b = (char *)malloc(sizeof(char) * ((size_t)chars + 1)); + if (!b) + { + return -1; + } - if ((chars = vsprintf(b, fmt, ap)) < 0) - { - free(b); - } - else - { - *buf = b; - } + if ((chars = vsprintf(b, fmt, ap)) < 0) + { + free(b); + } + else + { + *buf = b; + } - return chars; + return chars; } #endif /* !HAVE_VASPRINTF */