summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glsl/ralloc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/glsl/ralloc.c b/src/glsl/ralloc.c
index fa2dd8b01e6..3ba5d86cd9c 100644
--- a/src/glsl/ralloc.c
+++ b/src/glsl/ralloc.c
@@ -392,7 +392,15 @@ printf_length(const char *fmt, va_list untouched_args)
va_list args;
va_copy(args, untouched_args);
+#ifdef _MSC_VER
+ /* We need to use _vcsprintf to calculate the size as vsnprintf returns -1
+ * if the number of characters to write is greater than count.
+ */
+ size = _vscprintf(fmt, args);
+ (void)junk;
+#else
size = vsnprintf(&junk, 1, fmt, args);
+#endif
assert(size >= 0);
return size;