Bug 1645358 - Handle DeadObjectProxy in js::CopyErrorObject. r=evilpie

Differential Revision: https://phabricator.services.mozilla.com/D159590
This commit is contained in:
Jan de Mooij 2022-10-19 09:03:53 +00:00
Родитель 3ddbc463f2
Коммит 6853e71921
2 изменённых файлов: 11 добавлений и 0 удалений

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

@ -0,0 +1,6 @@
// |jit-test| error:TypeError: can't redefine
var g = newGlobal({newCompartment: true});
var dbg = new Debugger();
var gw = dbg.addDebuggee(g);
nukeAllCCWs();
gw.defineProperty("undefined", {value: -1});

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

@ -718,6 +718,11 @@ JSObject* js::CopyErrorObject(JSContext* cx, Handle<ErrorObject*> err) {
if (!cx->compartment()->wrap(cx, &stack)) {
return nullptr;
}
if (stack && JS_IsDeadWrapper(stack)) {
// ErrorObject::create expects |stack| to be either nullptr or a (possibly
// wrapped) SavedFrame instance.
stack = nullptr;
}
Rooted<mozilla::Maybe<Value>> cause(cx, mozilla::Nothing());
if (auto maybeCause = err->getCause()) {
RootedValue errorCause(cx, maybeCause.value());