From 03107d402808045bdadc0edf3d66e960dd37b967 Mon Sep 17 00:00:00 2001 From: Alexander Narsudinov Date: Sat, 17 Dec 2022 20:22:08 +0300 Subject: 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. --- Userland/Applications/FileManager/FileOperationProgressWidget.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 + * Copyright (c) 2022, Alexander Narsudinov * * 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); -- cgit v1.2.3