summaryrefslogtreecommitdiff
path: root/src/WinConsoleFile.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-06-24 16:56:34 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-06-24 16:56:34 +0900
commit73b75186c765fbf28f0479e920436afe3210f484 (patch)
treea061bd78519c0d172c4ba8b3670948c3c62d4a9c /src/WinConsoleFile.cc
parent96720b297d50d290bda746fab75e0078ac5f975b (diff)
Handle the case when MINGW32 vsnprintf returns -1
MINGW32 vsnprintf returns -1 if output is truncated. Increased buffer for vsnprintf in WinConsoleFile and fmt.
Diffstat (limited to 'src/WinConsoleFile.cc')
-rw-r--r--src/WinConsoleFile.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/WinConsoleFile.cc b/src/WinConsoleFile.cc
index fecd55fd..dc9de9f7 100644
--- a/src/WinConsoleFile.cc
+++ b/src/WinConsoleFile.cc
@@ -74,12 +74,16 @@ size_t WinConsoleFile::write(const char* str)
int WinConsoleFile::printf(const char* format, ...)
{
- char buf[1024];
+ char buf[2048];
va_list ap;
va_start(ap, format);
int r = vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
- if(r <= 0) {
+ if(r == -1) {
+ // MINGW32 vsnprintf returns -1 if output is truncated.
+ r = strlen(buf);
+ } else if(r < 0) {
+ // Reachable?
return 0;
}
DWORD written;