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/fmt.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/fmt.cc')
| -rw-r--r-- | src/fmt.cc | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -44,10 +44,20 @@ std::string fmt(const char* fmtTemplate, ...) { va_list ap; va_start(ap, fmtTemplate); - char buf[1024]; - if(vsnprintf(buf, sizeof(buf), fmtTemplate, ap) <= 0) { + char buf[2048]; + int rv; + rv = vsnprintf(buf, sizeof(buf), fmtTemplate, ap); +#ifdef __MINGW32__ + // MINGW32 vsnprintf returns -1 if output is truncated. + if(rv < 0 && rv != -1) { + // Reachable? buf[0] = '\0'; } +#else // !__MINGW32__ + if(rv < 0) { + buf[0] = '\0'; + } +#endif // !__MINGW32__ va_end(ap); return buf; } |
