mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-10 05:10:05 +00:00
Fix error handling in fmt::fprintf.
This commit is contained in:
parent
8ea9f068c7
commit
615c1eef6b
@ -1087,7 +1087,8 @@ void fmt::print_colored(Color c, StringRef format, ArgList args) {
|
|||||||
int fmt::fprintf(std::FILE *f, StringRef format, ArgList args) {
|
int fmt::fprintf(std::FILE *f, StringRef format, ArgList args) {
|
||||||
MemoryWriter w;
|
MemoryWriter w;
|
||||||
printf(w, format, args);
|
printf(w, format, args);
|
||||||
return std::fwrite(w.data(), 1, w.size(), f);
|
std::size_t size = w.size();
|
||||||
|
return std::fwrite(w.data(), 1, size, f) < size ? -1 : static_cast<int>(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Explicit instantiations for char.
|
// Explicit instantiations for char.
|
||||||
|
@ -438,4 +438,11 @@ TEST(PrintfTest, Examples) {
|
|||||||
EXPECT_WRITE(stdout, fmt::printf("%1$s, %3$d %2$s", weekday, month, day),
|
EXPECT_WRITE(stdout, fmt::printf("%1$s, %3$d %2$s", weekday, month, day),
|
||||||
"Thursday, 21 August");
|
"Thursday, 21 August");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(PrintfTest, PrintfError) {
|
||||||
|
fmt::File read_end, write_end;
|
||||||
|
fmt::File::pipe(read_end, write_end);
|
||||||
|
int result = fmt::fprintf(read_end.fdopen("r").get(), "test");
|
||||||
|
EXPECT_LT(result, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user