mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:17:35 +00:00
LibJS: Don't "copy construct" temporary value in ThrowCompletionOr ctor
It was possible for the generic ThrowCompletionOr constructor to "copy-construct" a JS Object when instantiating a ThrowCompletionOr via e.g `return *object;`. This happened because it chose the Object(Object& prototype) constructor which will be removed in a subsequent commit. It was not easy to debug. As a first step towards avoiding this in the future, the generic ThrowCompletionOr constructor now takes the value as a const reference.
This commit is contained in:
parent
3ea1584f2e
commit
42b5c896e8
1 changed files with 2 additions and 2 deletions
|
@ -268,9 +268,9 @@ public:
|
|||
// Most commonly: Value from Object* or similar, so we can omit the curly braces from "return { TRY(...) };".
|
||||
// Disabled for POD types to avoid weird conversion shenanigans.
|
||||
template<typename WrappedValueType>
|
||||
ThrowCompletionOr(WrappedValueType value)
|
||||
ThrowCompletionOr(WrappedValueType const& value)
|
||||
requires(!IsPOD<ValueType>)
|
||||
: m_value(move(value))
|
||||
: m_value(value)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue