Bug 1337637 - Release rule when deleting from ServoCSSRuleList. r?heycam
MozReview-Commit-ID: CrVNCTEJ7l6
--- a/layout/style/ServoCSSRuleList.cpp
+++ b/layout/style/ServoCSSRuleList.cpp
@@ -128,16 +128,20 @@ ServoCSSRuleList::InsertRule(const nsASt
return rv;
}
nsresult
ServoCSSRuleList::DeleteRule(uint32_t aIndex)
{
nsresult rv = Servo_CssRules_DeleteRule(mRawRules, aIndex);
if (!NS_FAILED(rv)) {
+ uintptr_t rule = mRules[aIndex];
+ if (rule > kMaxRuleType) {
+ CastToPtr(rule)->Release();
+ }
mRules.RemoveElementAt(aIndex);
}
return rv;
}
ServoCSSRuleList::~ServoCSSRuleList()
{
EnumerateInstantiatedRules([](css::Rule* rule) { rule->Release(); });