diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-06-24 16:56:34 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-06-24 16:56:34 +0900 |
| commit | 73b75186c765fbf28f0479e920436afe3210f484 (patch) | |
| tree | a061bd78519c0d172c4ba8b3670948c3c62d4a9c /src/WinConsoleFile.cc | |
| parent | 96720b297d50d290bda746fab75e0078ac5f975b (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.cc | 8 |
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; |
