From: Andrii Simiklit <andrii.simik...@globallogic.com> The win '_vsnprintf' function incompatibility with C99 vsnprintf. At least for case when the input buffer size less than the required size: '_vsnprintf' returns -1 for this case. 'vsnprintf' returns the required size.
So use cross platform implementation 'util_vsnprintf'. Fixes: 2353e96c320d "Coerce vsnprintf to _vsnprintf for windows" Signed-off-by: Andrii Simiklit <andrii.simik...@globallogic.com> --- src/mesa/main/imports.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index b4685b6..d42825e 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -46,6 +46,7 @@ #include <stdarg.h> #include "c99_math.h" #include "util/rounding.h" /* for _mesa_roundeven */ +#include "util/u_string.h" #include "imports.h" #include "context.h" #include "version.h" @@ -58,9 +59,7 @@ #endif -#ifdef _WIN32 -#define vsnprintf _vsnprintf -#elif defined(__IBMC__) || defined(__IBMCPP__) +#if defined(__IBMC__) || defined(__IBMCPP__) extern int vsnprintf(char *str, size_t count, const char *fmt, va_list arg); #endif @@ -255,7 +254,7 @@ _mesa_bitcount_64(uint64_t n) int _mesa_vsnprintf(char *str, size_t size, const char *fmt, va_list args) { - return vsnprintf( str, size, fmt, args); + return util_vsnprintf( str, size, fmt, args); } /** Wrapper around vsnprintf() */ @@ -264,8 +263,8 @@ _mesa_snprintf( char *str, size_t size, const char *fmt, ... ) { int r; va_list args; - va_start( args, fmt ); - r = vsnprintf( str, size, fmt, args ); + va_start( args, fmt ); + r = util_vsnprintf( str, size, fmt, args ); va_end( args ); return r; } -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev