summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Narsudinov <alexander.narsudinov@rtlabs.ru>2022-12-17 20:22:08 +0300
committerAndreas Kling <kling@serenityos.org>2022-12-20 11:04:44 +0100
commit03107d402808045bdadc0edf3d66e960dd37b967 (patch)
tree71a13df38d94ebd20087a6700ff2f42e71ea0259
parentc0542ed40b3b38df25d143dd265454661aa79fef (diff)
downloadserenity-03107d402808045bdadc0edf3d66e960dd37b967.zip
FileManager: Handle possible ByteBuffer allocation failure
Before this patch we created ByteBuffer with the help of the VERIFY macro that could cause a crash of FileManager in case of memory allocation failures. Now we propagate the error to a caller instead of using the `release_value_but_fixme_should_propagate_errors()` method.
-rw-r--r--Userland/Applications/FileManager/FileOperationProgressWidget.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/Userland/Applications/FileManager/FileOperationProgressWidget.cpp b/Userland/Applications/FileManager/FileOperationProgressWidget.cpp
index 997a4191af..e708c7a5cb 100644
--- a/Userland/Applications/FileManager/FileOperationProgressWidget.cpp
+++ b/Userland/Applications/FileManager/FileOperationProgressWidget.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2022, Alexander Narsudinov <a.narsudinov@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -71,7 +72,12 @@ FileOperationProgressWidget::FileOperationProgressWidget(FileOperation operation
m_notifier = Core::Notifier::construct(helper_pipe_fd, Core::Notifier::Read);
m_notifier->on_ready_to_read = [this] {
- auto line_buffer = ByteBuffer::create_zeroed(1 * KiB).release_value_but_fixme_should_propagate_errors();
+ auto line_buffer_or_error = ByteBuffer::create_zeroed(1 * KiB);
+ if (line_buffer_or_error.is_error()) {
+ did_error("Failed to allocate ByteBuffer for reading data."sv);
+ return;
+ }
+ auto line_buffer = line_buffer_or_error.release_value();
auto line_or_error = m_helper_pipe->read_line(line_buffer.bytes());
if (line_or_error.is_error() || line_or_error.value().is_empty()) {
did_error("Read from pipe returned null."sv);