Bug 1368735 - Fix GeneratorObject::suspend to allocate the array before changing generator state. r=jonco

This commit is contained in:
Jan de Mooij 2017-06-02 18:41:15 +02:00
Родитель ab86f7bf5d
Коммит 8f33388e7a
1 изменённых файлов: 8 добавлений и 6 удалений

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

@ -79,16 +79,18 @@ GeneratorObject::suspend(JSContext* cx, HandleObject obj, AbstractFramePtr frame
return false;
}
ArrayObject* stack = nullptr;
if (nvalues > 0) {
stack = NewDenseCopiedArray(cx, nvalues, vp);
if (!stack)
return false;
}
uint32_t yieldAndAwaitIndex = GET_UINT24(pc);
genObj->setYieldAndAwaitIndex(yieldAndAwaitIndex);
genObj->setEnvironmentChain(*frame.environmentChain());
if (nvalues) {
ArrayObject* stack = NewDenseCopiedArray(cx, nvalues, vp);
if (!stack)
return false;
if (stack)
genObj->setExpressionStack(*stack);
}
return true;
}