diff options
author | Sam Atkins <atkinssj@serenityos.org> | 2022-01-20 17:47:39 +0000 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-01-24 22:36:09 +0100 |
commit | 45cf40653a03dab11c0739783446ff696a9a5b0a (patch) | |
tree | 1611c797d1a43a106cf7220fcbdbba907f19d037 /Userland/Libraries/LibCore | |
parent | 140f1d9e55bfacb6f784bee591a6938714ed95b3 (diff) | |
download | serenity-45cf40653a03dab11c0739783446ff696a9a5b0a.zip |
Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr
Apologies for the enormous commit, but I don't see a way to split this
up nicely. In the vast majority of cases it's a simple change. A few
extra places can use TRY instead of manual error checking though. :^)
Diffstat (limited to 'Userland/Libraries/LibCore')
-rw-r--r-- | Userland/Libraries/LibCore/IODevice.cpp | 8 | ||||
-rw-r--r-- | Userland/Libraries/LibCore/InputBitStream.h | 10 | ||||
-rw-r--r-- | Userland/Libraries/LibCore/SecretString.cpp | 5 | ||||
-rw-r--r-- | Userland/Libraries/LibCore/Stream.h | 6 | ||||
-rw-r--r-- | Userland/Libraries/LibCore/UDPServer.cpp | 2 |
5 files changed, 12 insertions, 19 deletions
diff --git a/Userland/Libraries/LibCore/IODevice.cpp b/Userland/Libraries/LibCore/IODevice.cpp index 1911c8936e..889e49a5c0 100644 --- a/Userland/Libraries/LibCore/IODevice.cpp +++ b/Userland/Libraries/LibCore/IODevice.cpp @@ -49,7 +49,7 @@ ByteBuffer IODevice::read(size_t max_size) auto size = min(max_size, m_buffered_data.size()); auto buffer_result = ByteBuffer::create_uninitialized(size); - if (!buffer_result.has_value()) { + if (buffer_result.is_error()) { dbgln("IODevice::read: Not enough memory to allocate a buffer of {} bytes", size); return {}; } @@ -149,7 +149,7 @@ ByteBuffer IODevice::read_all() } auto result = ByteBuffer::copy(data); - if (result.has_value()) + if (!result.is_error()) return result.release_value(); set_error(ENOMEM); @@ -174,7 +174,7 @@ String IODevice::read_line(size_t max_size) return line; } auto line_result = ByteBuffer::create_uninitialized(max_size + 1); - if (!line_result.has_value()) { + if (line_result.is_error()) { dbgln("IODevice::read_line: Not enough memory to allocate a buffer of {} bytes", max_size + 1); return {}; } @@ -202,7 +202,7 @@ bool IODevice::populate_read_buffer(size_t size) const return false; auto buffer_result = ByteBuffer::create_uninitialized(size); - if (!buffer_result.has_value()) { + if (buffer_result.is_error()) { dbgln("IODevice::populate_read_buffer: Not enough memory to allocate a buffer of {} bytes", size); return {}; } diff --git a/Userland/Libraries/LibCore/InputBitStream.h b/Userland/Libraries/LibCore/InputBitStream.h index 0e844dc107..573f460dbf 100644 --- a/Userland/Libraries/LibCore/InputBitStream.h +++ b/Userland/Libraries/LibCore/InputBitStream.h @@ -99,13 +99,9 @@ public: m_current_byte.clear(); } } else { - // FIXME: This returns Optional so TRY is not useable - auto temp_buffer = ByteBuffer::create_uninitialized(1); - if (!temp_buffer.has_value()) - return Error::from_string_literal("Couldn't allocate temporary byte buffer"sv); - - TRY(m_stream.read(temp_buffer->bytes())); - m_current_byte = (*temp_buffer)[0]; + auto temp_buffer = TRY(ByteBuffer::create_uninitialized(1)); + TRY(m_stream.read(temp_buffer.bytes())); + m_current_byte = temp_buffer[0]; m_bit_offset = 0; } } diff --git a/Userland/Libraries/LibCore/SecretString.cpp b/Userland/Libraries/LibCore/SecretString.cpp index 4763936a81..493427d423 100644 --- a/Userland/Libraries/LibCore/SecretString.cpp +++ b/Userland/Libraries/LibCore/SecretString.cpp @@ -12,14 +12,13 @@ namespace Core { SecretString SecretString::take_ownership(char*& cstring, size_t length) { - auto buffer = ByteBuffer::copy(cstring, length); - VERIFY(buffer.has_value()); + auto buffer = ByteBuffer::copy(cstring, length).release_value_but_fixme_should_propagate_errors(); secure_zero(cstring, length); free(cstring); cstring = nullptr; - return SecretString(buffer.release_value()); + return SecretString(move(buffer)); } SecretString SecretString::take_ownership(ByteBuffer&& buffer) diff --git a/Userland/Libraries/LibCore/Stream.h b/Userland/Libraries/LibCore/Stream.h index 241a324d6c..9bfe2c4b81 100644 --- a/Userland/Libraries/LibCore/Stream.h +++ b/Userland/Libraries/LibCore/Stream.h @@ -479,11 +479,9 @@ public: if (!stream->is_open()) return Error::from_errno(ENOTCONN); - auto maybe_buffer = ByteBuffer::create_uninitialized(buffer_size); - if (!maybe_buffer.has_value()) - return Error::from_errno(ENOMEM); + auto buffer = TRY(ByteBuffer::create_uninitialized(buffer_size)); - return adopt_nonnull_own_or_enomem(new BufferedType<T>(move(stream), maybe_buffer.release_value())); + return adopt_nonnull_own_or_enomem(new BufferedType<T>(move(stream), move(buffer))); } T& stream() { return *m_stream; } diff --git a/Userland/Libraries/LibCore/UDPServer.cpp b/Userland/Libraries/LibCore/UDPServer.cpp index 9d754d2855..47a07fdf07 100644 --- a/Userland/Libraries/LibCore/UDPServer.cpp +++ b/Userland/Libraries/LibCore/UDPServer.cpp @@ -64,7 +64,7 @@ bool UDPServer::bind(const IPv4Address& address, u16 port) ByteBuffer UDPServer::receive(size_t size, sockaddr_in& in) { // FIXME: Handle possible OOM situation. - auto buf = ByteBuffer::create_uninitialized(size).release_value(); + auto buf = ByteBuffer::create_uninitialized(size).release_value_but_fixme_should_propagate_errors(); socklen_t in_len = sizeof(in); ssize_t rlen = ::recvfrom(m_fd, buf.data(), size, 0, (sockaddr*)&in, &in_len); if (rlen < 0) { |