From 5f80d8245d1bcdb5b205368ffc2d95acbf3cf59d Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Fri, 24 Sep 2021 01:41:54 +0300 Subject: [PATCH] LibJS: Close iterator on throw completion in Array.from This regressed in #10190 --- Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp b/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp index 22359d9bd1..e4eab82991 100644 --- a/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/ArrayConstructor.cpp @@ -149,11 +149,12 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayConstructor::from) Value mapped_value; if (map_fn) { - mapped_value = TRY_OR_DISCARD(vm.call(*map_fn, this_arg, next_value, Value(k))); - if (vm.exception()) { + auto mapped_value_or_error = vm.call(*map_fn, this_arg, next_value, Value(k)); + if (mapped_value_or_error.is_error()) { iterator_close(*iterator); return {}; } + mapped_value = mapped_value_or_error.release_value(); } else { mapped_value = next_value; }