summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibCore
diff options
context:
space:
mode:
authorSam Atkins <atkinssj@serenityos.org>2022-01-20 17:47:39 +0000
committerAndreas Kling <kling@serenityos.org>2022-01-24 22:36:09 +0100
commit45cf40653a03dab11c0739783446ff696a9a5b0a (patch)
tree1611c797d1a43a106cf7220fcbdbba907f19d037 /Userland/Libraries/LibCore
parent140f1d9e55bfacb6f784bee591a6938714ed95b3 (diff)
downloadserenity-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.cpp8
-rw-r--r--Userland/Libraries/LibCore/InputBitStream.h10
-rw-r--r--Userland/Libraries/LibCore/SecretString.cpp5
-rw-r--r--Userland/Libraries/LibCore/Stream.h6
-rw-r--r--Userland/Libraries/LibCore/UDPServer.cpp2
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) {