Skip to content

Commit

Permalink
fix: use compliant vasprintf on mingw32 environments in json-c
Browse files Browse the repository at this point in the history
  • Loading branch information
AngelCastilloB committed Nov 28, 2024
1 parent 55e4944 commit 4d44e3c
Showing 1 changed file with 33 additions and 33 deletions.
66 changes: 33 additions & 33 deletions lib/external/json-c/vasprintf_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,53 +14,53 @@
#include <stdint.h>
#include <stdlib.h>

#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 */

Expand Down

0 comments on commit 4d44e3c

Please sign in to comment.