--- b/modules/json-c/configure.ac +++ a/modules/json-c/configure.ac @@ -75,7 +75,7 @@ AC_FUNC_VPRINTF AC_FUNC_MEMCMP AC_CHECK_FUNCS([realloc]) +AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open strncasecmp setlocale) -AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf open strncasecmp setlocale) AC_CHECK_DECLS([INFINITY], [], [], [[#include ]]) AC_CHECK_DECLS([nan], [], [], [[#include ]]) AC_CHECK_DECLS([isnan], [], [], [[#include ]]) --- b/modules/json-c/json_pointer.c +++ a/modules/json-c/json_pointer.c @@ -208,7 +208,7 @@ } va_start(args, path_fmt); + rc = vasprintf(&path_copy, path_fmt, args); - rc = json_vasprintf(&path_copy, path_fmt, args); va_end(args); if (rc < 0) @@ -287,7 +287,7 @@ /* pass a working copy to the recursive call */ va_start(args, path_fmt); + rc = vasprintf(&path_copy, path_fmt, args); - rc = json_vasprintf(&path_copy, path_fmt, args); va_end(args); if (rc < 0) --- b/modules/json-c/printbuf.c +++ a/modules/json-c/printbuf.c @@ -129,7 +129,7 @@ would have been written - this code handles both cases. */ if(size == -1 || size > 127) { va_start(ap, msg); + if((size = vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; } - if((size = json_vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; } va_end(ap); printbuf_memappend(p, t, size); free(t); --- b/modules/json-c/vasprintf_compat.h +++ a/modules/json-c/vasprintf_compat.h @@ -8,8 +8,9 @@ #include "snprintf_compat.h" +#if !defined(HAVE_VASPRINTF) /* CAW: compliant version of vasprintf */ +static int vasprintf(char **buf, const char *fmt, va_list ap) -static int json_vasprintf(char **buf, const char *fmt, va_list ap) { #ifndef WIN32 static char _T_emptybuffer = '\0'; @@ -40,5 +41,6 @@ return chars; } +#endif /* !HAVE_VASPRINTF */ #endif /* __vasprintf_compat_h */