mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:17:36 +00:00
Userland: Don't leak objects when constructor arguments throw
Similar to d253beb2f7
.
Found with Ali's clang-query script in Shell:
```
for $(find AK Userland -type f -name '*.h' -o -name '*.cpp') {
in_parallel -j 12 -- clang-query -p \
Build/lagom/compile_commands.json $it -c \
'm cxxNewExpr(has(cxxConstructExpr(hasAnyArgument(hasDescendant( \
allOf(isExpandedFromMacro("TRY"), stmtExpr()))))))' \
} | grep -v 'matches.' | tee results
```
This commit is contained in:
parent
d253beb2f7
commit
c145d5410c
4 changed files with 20 additions and 11 deletions
|
@ -94,9 +94,9 @@ ErrorOr<NonnullOwnPtr<SetOptionCommand>> SetOptionCommand::from_string(StringVie
|
|||
|
||||
VERIFY(!name.is_empty());
|
||||
|
||||
return adopt_nonnull_own_or_enomem(new (nothrow) SetOptionCommand(
|
||||
TRY(String::from_utf8(name.string_view().trim_whitespace())),
|
||||
TRY(String::from_utf8(value.string_view().trim_whitespace()))));
|
||||
auto name_string = TRY(String::from_utf8(name.string_view().trim_whitespace()));
|
||||
auto value_string = TRY(String::from_utf8(value.string_view().trim_whitespace()));
|
||||
return adopt_nonnull_own_or_enomem(new (nothrow) SetOptionCommand(name_string, value_string));
|
||||
}
|
||||
|
||||
ErrorOr<String> SetOptionCommand::to_string() const
|
||||
|
@ -259,10 +259,11 @@ ErrorOr<NonnullOwnPtr<IdCommand>> IdCommand::from_string(StringView command)
|
|||
TRY(value.try_append(tokens[i]));
|
||||
}
|
||||
|
||||
auto value_string = TRY(value.to_string());
|
||||
if (tokens[1] == "name") {
|
||||
return adopt_nonnull_own_or_enomem(new (nothrow) IdCommand(Type::Name, TRY(value.to_string())));
|
||||
return adopt_nonnull_own_or_enomem(new (nothrow) IdCommand(Type::Name, value_string));
|
||||
} else if (tokens[1] == "author") {
|
||||
return adopt_nonnull_own_or_enomem(new (nothrow) IdCommand(Type::Author, TRY(value.to_string())));
|
||||
return adopt_nonnull_own_or_enomem(new (nothrow) IdCommand(Type::Author, value_string));
|
||||
}
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue