Преглед изворни кода

LibJS: Initialize value in ThrowCompletionOr<void> default constructor

Otherwise, TRY() will crash when calling release_value() on the empty
m_value Optional.
Linus Groh пре 3 година
родитељ
комит
fea27143e9
1 измењених фајлова са 4 додато и 1 уклоњено
  1. 4 1
      Userland/Libraries/LibJS/Runtime/Completion.h

+ 4 - 1
Userland/Libraries/LibJS/Runtime/Completion.h

@@ -97,7 +97,10 @@ private:
 template<typename ValueType>
 class [[nodiscard]] ThrowCompletionOr {
 public:
-    ThrowCompletionOr() requires(IsSame<ValueType, Empty>) = default;
+    ThrowCompletionOr() requires(IsSame<ValueType, Empty>)
+        : m_value(Empty {})
+    {
+    }
 
     // Not `explicit` on purpose so that `return vm.throw_completion<Error>(...);` is possible.
     ThrowCompletionOr(Completion throw_completion)