Bug 1921097 - Fix up RadioGroupContainer::SizeOfIncludingThis(). r=dom-core,jjaschke

mRadioGroups is an interior pointer, so we shouldn't pass it to
MallocSizeOf.

Also, devirtualize RadioGroupContainer::WalkRadioGroup. This method
being virtual meant that RadioGroupContainer needed a vtable, causing
`this` to not be equal to `this.mRadioGroups`.

Differential Revision: https://phabricator.services.mozilla.com/D223638
This commit is contained in:
Andrew McCreight
2024-09-30 17:00:11 +00:00
parent c2664b3583
commit 79fc1fa66f
2 changed files with 2 additions and 2 deletions

View File

@@ -65,7 +65,7 @@ void RadioGroupContainer::Traverse(RadioGroupContainer* tmp,
size_t RadioGroupContainer::SizeOfIncludingThis( size_t RadioGroupContainer::SizeOfIncludingThis(
MallocSizeOf aMallocSizeOf) const { MallocSizeOf aMallocSizeOf) const {
return mRadioGroups.SizeOfIncludingThis(aMallocSizeOf); return aMallocSizeOf(this) + mRadioGroups.SizeOfExcludingThis(aMallocSizeOf);
} }
nsresult RadioGroupContainer::WalkRadioGroup(const nsAString& aName, nsresult RadioGroupContainer::WalkRadioGroup(const nsAString& aName,

View File

@@ -26,7 +26,7 @@ class RadioGroupContainer final {
nsCycleCollectionTraversalCallback& cb); nsCycleCollectionTraversalCallback& cb);
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const; size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
NS_IMETHOD WalkRadioGroup(const nsAString& aName, nsIRadioVisitor* aVisitor); nsresult WalkRadioGroup(const nsAString& aName, nsIRadioVisitor* aVisitor);
void SetCurrentRadioButton(const nsAString& aName, HTMLInputElement* aRadio); void SetCurrentRadioButton(const nsAString& aName, HTMLInputElement* aRadio);
HTMLInputElement* GetCurrentRadioButton(const nsAString& aName); HTMLInputElement* GetCurrentRadioButton(const nsAString& aName);
nsresult GetNextRadioButton(const nsAString& aName, const bool aPrevious, nsresult GetNextRadioButton(const nsAString& aName, const bool aPrevious,