From cfa738d3185980ff8532a35192a9113b0e9a937c Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Wed, 17 Jul 2013 18:08:58 +0200 Subject: [PATCH 1/1] Don't use vasprintf() anymore on Windows. Windows doesn't actually support it, but MinGW provides it. However, with some versions of MinGW it doesn't work correctly. Instead, we vsnprintf() to a local buffer and xstrdup() the results. --- lib/xmalloc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/xmalloc.c b/lib/xmalloc.c index e4079ce..58f2bce 100644 --- a/lib/xmalloc.c +++ b/lib/xmalloc.c @@ -147,10 +147,18 @@ int xasprintf(char **strp, const char *fmt, ...) { } int xvasprintf(char **strp, const char *fmt, va_list ap) { +#ifdef HAVE_MINGW + char buf[1024]; + int result = vsnprintf(buf, sizeof buf, fmt, ap); + if(result < 0) + exit(xalloc_exit_failure); + *strp = xstrdup(buf); +#else int result = vasprintf(strp, fmt, ap); if(result < 0) { fprintf(stderr, "vasprintf() failed: %s\n", strerror(errno)); exit(xalloc_exit_failure); } +#endif return result; } -- 2.25.1