blob: edaf5759dad87503f505e0a325d9f0d9c2598f8f [file] [log] [blame]
James Kuszmaulcf324122023-01-14 14:07:17 -08001From e685209746aabbbed0a9db54694b8ea1ca504163 Mon Sep 17 00:00:00 2001
2From: Tyler Veness <calcmogul@gmail.com>
3Date: Wed, 18 May 2022 10:21:49 -0700
4Subject: [PATCH 1/2] Don't throw on write failure
5
6---
7 include/fmt/format-inl.h | 4 +---
8 include/fmt/xchar.h | 3 +--
9 src/os.cc | 3 +--
10 3 files changed, 3 insertions(+), 7 deletions(-)
11
12diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h
13index 22b1ec8..abe4ff1 100644
14--- a/include/fmt/format-inl.h
15+++ b/include/fmt/format-inl.h
16@@ -79,9 +79,7 @@ FMT_FUNC void report_error(format_func func, int error_code,
17 // A wrapper around fwrite that throws on error.
18 inline void fwrite_fully(const void* ptr, size_t size, size_t count,
19 FILE* stream) {
20- size_t written = std::fwrite(ptr, size, count, stream);
21- if (written < count)
22- FMT_THROW(system_error(errno, FMT_STRING("cannot write to file")));
23+ std::fwrite(ptr, size, count, stream);
24 }
25
26 #ifndef FMT_STATIC_THOUSANDS_SEPARATOR
27diff --git a/include/fmt/xchar.h b/include/fmt/xchar.h
28index 3b5bc15..fc3c67f 100644
29--- a/include/fmt/xchar.h
30+++ b/include/fmt/xchar.h
31@@ -200,8 +200,7 @@ inline void vprint(std::FILE* f, wstring_view fmt, wformat_args args) {
32 wmemory_buffer buffer;
33 detail::vformat_to(buffer, fmt, args);
34 buffer.push_back(L'\0');
35- if (std::fputws(buffer.data(), f) == -1)
36- FMT_THROW(system_error(errno, FMT_STRING("cannot write to file")));
37+ std::fputws(buffer.data(), f);
38 }
39
40 inline void vprint(wstring_view fmt, wformat_args args) {
41diff --git a/src/os.cc b/src/os.cc
42index f388ead..2c49951 100644
43--- a/src/os.cc
44+++ b/src/os.cc
45@@ -277,8 +277,7 @@ std::size_t file::read(void* buffer, std::size_t count) {
46 std::size_t file::write(const void* buffer, std::size_t count) {
47 rwresult result = 0;
48 FMT_RETRY(result, FMT_POSIX_CALL(write(fd_, buffer, convert_rwcount(count))));
49- if (result < 0) FMT_THROW(system_error(errno, "cannot write to file"));
50- return detail::to_unsigned(result);
51+ return count;
52 }
53
54 file file::dup(int fd) {