@@ -73,9 +73,8 @@ FMT_FUNC void report_error(format_func func, int error_code,
73
73
}
74
74
75
75
// A wrapper around fwrite that throws on error.
76
- inline void fwrite_fully (const void * ptr, size_t size, size_t count,
77
- FILE* stream) {
78
- size_t written = std::fwrite (ptr, size, count, stream);
76
+ inline void fwrite_fully (const void * ptr, size_t count, FILE* stream) {
77
+ size_t written = std::fwrite (ptr, 1 , count, stream);
79
78
if (written < count)
80
79
FMT_THROW (system_error (errno, FMT_STRING (" cannot write to file" )));
81
80
}
@@ -1433,13 +1432,12 @@ extern "C" __declspec(dllimport) int __stdcall WriteConsoleW( //
1433
1432
void *, const void *, dword, dword*, void *);
1434
1433
1435
1434
FMT_FUNC bool write_console (std::FILE* f, string_view text) {
1436
- auto fd = _fileno (f);
1435
+ int fd = _fileno (f);
1437
1436
if (!_isatty (fd)) return false ;
1437
+ std::fflush (f);
1438
1438
auto u16 = utf8_to_utf16 (text);
1439
- auto written = dword ();
1440
1439
return WriteConsoleW (reinterpret_cast <void *>(_get_osfhandle (fd)), u16.c_str (),
1441
- static_cast <uint32_t >(u16.size ()), &written,
1442
- nullptr ) != 0 ;
1440
+ static_cast <dword>(u16.size ()), nullptr , nullptr ) != 0 ;
1443
1441
}
1444
1442
#endif
1445
1443
@@ -1448,12 +1446,12 @@ FMT_FUNC bool write_console(std::FILE* f, string_view text) {
1448
1446
FMT_FUNC void vprint_mojibake (std::FILE* f, string_view fmt, format_args args) {
1449
1447
auto buffer = memory_buffer ();
1450
1448
detail::vformat_to (buffer, fmt, args);
1451
- fwrite_fully (buffer.data (), 1 , buffer.size (), f);
1449
+ fwrite_fully (buffer.data (), buffer.size (), f);
1452
1450
}
1453
1451
#endif
1454
1452
1455
1453
FMT_FUNC void print (std::FILE* f, string_view text) {
1456
- if (!write_console (f, text)) fwrite_fully (text.data (), 1 , text.size (), f);
1454
+ if (!write_console (f, text)) fwrite_fully (text.data (), text.size (), f);
1457
1455
}
1458
1456
} // namespace detail
1459
1457
0 commit comments