mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:38:11 +00:00
Everywhere: Make ByteBuffer::{create_*,copy}() OOM-safe
This commit is contained in:
parent
3a9f00c59b
commit
97e97bccab
105 changed files with 629 additions and 290 deletions
|
@ -1589,7 +1589,13 @@ void Execute::for_each_entry(RefPtr<Shell> shell, Function<IterationDecision(Non
|
|||
return Break;
|
||||
}
|
||||
} else {
|
||||
auto entry = ByteBuffer::create_uninitialized(line_end + ifs.length());
|
||||
auto entry_result = ByteBuffer::create_uninitialized(line_end + ifs.length());
|
||||
if (!entry_result.has_value()) {
|
||||
loop.quit(Break);
|
||||
notifier->set_enabled(false);
|
||||
return Break;
|
||||
}
|
||||
auto entry = entry_result.release_value();
|
||||
auto rc = stream.read_or_error(entry);
|
||||
VERIFY(rc);
|
||||
|
||||
|
@ -1675,7 +1681,12 @@ void Execute::for_each_entry(RefPtr<Shell> shell, Function<IterationDecision(Non
|
|||
} while (action == Continue);
|
||||
|
||||
if (!stream.eof()) {
|
||||
auto entry = ByteBuffer::create_uninitialized(stream.size());
|
||||
auto entry_result = ByteBuffer::create_uninitialized(stream.size());
|
||||
if (!entry_result.has_value()) {
|
||||
shell->raise_error(Shell::ShellError::OutOfMemory, {}, position());
|
||||
return;
|
||||
}
|
||||
auto entry = entry_result.release_value();
|
||||
auto rc = stream.read_or_error(entry);
|
||||
VERIFY(rc);
|
||||
callback(make_ref_counted<StringValue>(String::copy(entry)));
|
||||
|
|
|
@ -1999,6 +1999,9 @@ void Shell::possibly_print_error() const
|
|||
case ShellError::OpenFailure:
|
||||
warnln("Shell: Open failed for {}", m_error_description);
|
||||
break;
|
||||
case ShellError::OutOfMemory:
|
||||
warnln("Shell: Hit an OOM situation");
|
||||
break;
|
||||
case ShellError::InternalControlFlowBreak:
|
||||
case ShellError::InternalControlFlowContinue:
|
||||
return;
|
||||
|
|
|
@ -233,6 +233,7 @@ public:
|
|||
InvalidGlobError,
|
||||
InvalidSliceContentsError,
|
||||
OpenFailure,
|
||||
OutOfMemory,
|
||||
};
|
||||
|
||||
void raise_error(ShellError kind, String description, Optional<AST::Position> position = {})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue