aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Support/raw_ostream.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h
index 58d5be2741..db312f8735 100644
--- a/include/llvm/Support/raw_ostream.h
+++ b/include/llvm/Support/raw_ostream.h
@@ -17,6 +17,7 @@
#include "llvm/ADT/StringExtras.h"
#include <cassert>
#include <cstring>
+#include <cstdio>
#include <string>
#include <iosfwd>
@@ -173,7 +174,11 @@ public:
/// returns the length of the formatted string. If the buffer is too small,
/// this returns a length to retry with, which will be larger than BufferSize.
virtual unsigned print(char *Buffer, unsigned BufferSize) const {
+#ifdef WIN32
+ int N = _snprintf(Buffer, BufferSize-1, Fmt, Val);
+#else
int N = snprintf(Buffer, BufferSize-1, Fmt, Val);
+#endif
if (N < 0) // VC++ and old GlibC return negative on overflow.
return BufferSize*2;
if (unsigned(N) >= BufferSize-1)// Other impls yield number of bytes needed.