blob: 5b05dbf66fcaa50dc322a4cf02007a9a66733df3 [file] [log] [blame]
James Kuszmaulb13e13f2023-11-22 20:44:04 -08001From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
James Kuszmaulcf324122023-01-14 14:07:17 -08002From: 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 +--
James Kuszmaulb13e13f2023-11-22 20:44:04 -08009 src/os.cc | 4 +---
10 3 files changed, 3 insertions(+), 8 deletions(-)
James Kuszmaulcf324122023-01-14 14:07:17 -080011
12diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h
James Kuszmaulb13e13f2023-11-22 20:44:04 -080013index dac2d437a41ab7b0b4e72895212b5a972ada73a9..af6ba74d618f29c77339e8a82906cccd26a2efa4 100644
James Kuszmaulcf324122023-01-14 14:07:17 -080014--- a/include/fmt/format-inl.h
15+++ b/include/fmt/format-inl.h
James Kuszmaulb13e13f2023-11-22 20:44:04 -080016@@ -75,9 +75,7 @@ FMT_FUNC void report_error(format_func func, int error_code,
James Kuszmaulcf324122023-01-14 14:07:17 -080017 // 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
James Kuszmaulb13e13f2023-11-22 20:44:04 -080028index 625ec36922e9bcc44a76b3c40792cb08ede63813..0f79c1720a4c855bb7088381e93af08eae56d66c 100644
James Kuszmaulcf324122023-01-14 14:07:17 -080029--- a/include/fmt/xchar.h
30+++ b/include/fmt/xchar.h
James Kuszmaulb13e13f2023-11-22 20:44:04 -080031@@ -220,8 +220,7 @@ inline void vprint(std::FILE* f, wstring_view fmt, wformat_args args) {
32 auto buf = wmemory_buffer();
33 detail::vformat_to(buf, fmt, args);
34 buf.push_back(L'\0');
35- if (std::fputws(buf.data(), f) == -1)
James Kuszmaulcf324122023-01-14 14:07:17 -080036- FMT_THROW(system_error(errno, FMT_STRING("cannot write to file")));
James Kuszmaulb13e13f2023-11-22 20:44:04 -080037+ std::fputws(buf.data(), f);
James Kuszmaulcf324122023-01-14 14:07:17 -080038 }
39
40 inline void vprint(wstring_view fmt, wformat_args args) {
41diff --git a/src/os.cc b/src/os.cc
James Kuszmaulb13e13f2023-11-22 20:44:04 -080042index bca410e945e0347d349e06179906a43b38b56a5c..d7ded50f9870a885d1ce1835fecc4f740858127a 100644
James Kuszmaulcf324122023-01-14 14:07:17 -080043--- a/src/os.cc
44+++ b/src/os.cc
James Kuszmaulb13e13f2023-11-22 20:44:04 -080045@@ -258,9 +258,7 @@ long long file::size() const {
46 std::size_t file::read(void* buffer, std::size_t count) {
James Kuszmaulcf324122023-01-14 14:07:17 -080047 rwresult result = 0;
James Kuszmaulb13e13f2023-11-22 20:44:04 -080048 FMT_RETRY(result, FMT_POSIX_CALL(read(fd_, buffer, convert_rwcount(count))));
49- if (result < 0)
50- FMT_THROW(system_error(errno, FMT_STRING("cannot read from file")));
James Kuszmaulcf324122023-01-14 14:07:17 -080051- return detail::to_unsigned(result);
52+ return count;
53 }
54
James Kuszmaulb13e13f2023-11-22 20:44:04 -080055 std::size_t file::write(const void* buffer, std::size_t count) {