Bug 1435306 followup - Fix rooting hazard. r=red CLOSED TREE
--- a/js/src/builtin/intl/PluralRules.cpp
+++ b/js/src/builtin/intl/PluralRules.cpp
@@ -126,21 +126,25 @@ PluralRules(JSContext* cx, unsigned argc
void
js::PluralRulesObject::finalize(FreeOp* fop, JSObject* obj)
{
MOZ_ASSERT(fop->onActiveCooperatingThread());
PluralRulesObject* pluralRules = &obj->as<PluralRulesObject>();
const Value& prslot = pluralRules->getReservedSlot(PluralRulesObject::UPLURAL_RULES_SLOT);
- if (UPluralRules* pr = static_cast<UPluralRules*>(prslot.toPrivate()))
+ UPluralRules* pr = static_cast<UPluralRules*>(prslot.toPrivate());
+
+ const Value& nfslot = pluralRules->getReservedSlot(PluralRulesObject::UNUMBER_FORMAT_SLOT);
+ UNumberFormat* nf = static_cast<UNumberFormat*>(nfslot.toPrivate());
+
+ if (pr)
uplrules_close(pr);
- const Value& nfslot = pluralRules->getReservedSlot(PluralRulesObject::UNUMBER_FORMAT_SLOT);
- if (UNumberFormat* nf = static_cast<UNumberFormat*>(nfslot.toPrivate()))
+ if (nf)
unum_close(nf);
}
JSObject*
js::CreatePluralRulesPrototype(JSContext* cx, HandleObject Intl, Handle<GlobalObject*> global)
{
RootedFunction ctor(cx);
ctor = global->createConstructor(cx, &PluralRules, cx->names().PluralRules, 0);