Bug 1765339 - Update error handling in PipeToPump r=evilpie

Differential Revision: https://phabricator.services.mozilla.com/D144035
This commit is contained in:
Matthew Gaudet 2022-04-19 17:52:19 +00:00
Родитель ec93876623
Коммит 7ce305f41c
1 изменённых файлов: 9 добавлений и 5 удалений

Просмотреть файл

@ -503,12 +503,16 @@ void PipeToPump::ShutdownWithActionAfterFinishedWrite(
RefPtr<Promise> p = aAction(aCx, thisRefPtr, aError, rv);
// Error while calling actions above, continue immediately with finalization.
rv.WouldReportJSException();
if (rv.Failed()) {
if (rv.MaybeSetPendingException(aCx)) {
JS::Rooted<Maybe<JS::Value>> someError(aCx);
JS::Rooted<JS::Value> error(aCx);
bool ok = ToJSValue(aCx, std::move(rv), &error);
MOZ_RELEASE_ASSERT(ok, "must be ok");
JS::Rooted<mozilla::Maybe<JS::Value>> someError(aCx, Some(error.get()));
if (JS_GetPendingException(aCx, &error)) {
someError = Some(error.get());
}
JS_ClearPendingException(aCx);
Finalize(aCx, someError);
return;
}