From 53fa6004fb36dd93181fba4f4e1ea952b9e628ca Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 28 Sep 2015 20:51:52 +0000 Subject: [PATCH] Add vasprintf() implementation called from asprintf(), and DLL-export them. --- src/xpdev/xpprintf.c | 18 ++++++++++++++---- src/xpdev/xpprintf.h | 2 ++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/xpdev/xpprintf.c b/src/xpdev/xpprintf.c index dd0021440d..d38a6aad2c 100644 --- a/src/xpdev/xpprintf.c +++ b/src/xpdev/xpprintf.c @@ -45,25 +45,35 @@ #include "gen_defs.h" #if defined(_MSC_VER) || defined(__MSVCRT__) -int asprintf(char **strptr, char *format, ...) +int DLLCALL vasprintf(char **strptr, char *format, va_list va) { - va_list va; va_list va2; int ret; if (strptr == NULL) return -1; - va_start(va, format); va_copy(va2, va); ret = _vscprintf(format, va); *strptr = (char *)malloc(ret+1); if (*strptr == NULL) return -1; ret = vsprintf(*strptr, format, va2); - va_end(va); va_end(va2); return ret; } + +int DLLCALL asprintf(char **strptr, char *format, ...) +{ + va_list va; + int ret; + + if (strptr == NULL) + return -1; + va_start(va, format); + ret=vasprintf(strptr, format, va); + va_end(va); + return ret; +} #endif /* Maximum length of a format specifier including the % */ diff --git a/src/xpdev/xpprintf.h b/src/xpdev/xpprintf.h index 8784f517d0..7033f66f22 100644 --- a/src/xpdev/xpprintf.h +++ b/src/xpdev/xpprintf.h @@ -79,6 +79,8 @@ DLLEXPORT char* DLLCALL xp_asprintf_end(char *format, size_t *endlen); DLLEXPORT char* DLLCALL xp_asprintf(const char *format, ...); DLLEXPORT char* DLLCALL xp_vasprintf(const char *format, va_list va); DLLEXPORT int DLLCALL xp_printf_get_type(const char *format); +DLLEXPORT int DLLCALL vasprintf(char **strptr, char *format, va_list va); +DLLEXPORT int DLLCALL asprintf(char **strptr, char *format, ...); #if defined(__cplusplus) } #endif -- GitLab