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

Reply via email to