mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1205476 - crash in mozilla::a11y::DocAccessible::ProcessInvalidationList(), r=smaug
This commit is contained in:
parent
ded8b8934e
commit
036387cad5
@ -116,6 +116,10 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(DocAccessible, Accessible)
|
|||||||
tmp->mDependentIDsHash.EnumerateRead(CycleCollectorTraverseDepIDsEntry, &cb);
|
tmp->mDependentIDsHash.EnumerateRead(CycleCollectorTraverseDepIDsEntry, &cb);
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAccessibleCache)
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAccessibleCache)
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAnchorJumpElm)
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAnchorJumpElm)
|
||||||
|
for (uint32_t i = 0; i < tmp->mARIAOwnsInvalidationList.Length(); ++i) {
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mARIAOwnsInvalidationList[i].mOwner)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mARIAOwnsInvalidationList[i].mChild)
|
||||||
|
}
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(DocAccessible, Accessible)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(DocAccessible, Accessible)
|
||||||
@ -126,6 +130,10 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(DocAccessible, Accessible)
|
|||||||
tmp->mNodeToAccessibleMap.Clear();
|
tmp->mNodeToAccessibleMap.Clear();
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAccessibleCache)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAccessibleCache)
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAnchorJumpElm)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAnchorJumpElm)
|
||||||
|
for (uint32_t i = 0; i < tmp->mARIAOwnsInvalidationList.Length(); ++i) {
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mARIAOwnsInvalidationList[i].mOwner)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mARIAOwnsInvalidationList[i].mChild)
|
||||||
|
}
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(DocAccessible)
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(DocAccessible)
|
||||||
@ -1340,6 +1348,10 @@ DocAccessible::ProcessInvalidationList()
|
|||||||
// Alter the tree according to aria-owns (seize the trees).
|
// Alter the tree according to aria-owns (seize the trees).
|
||||||
for (uint32_t idx = 0; idx < mARIAOwnsInvalidationList.Length(); idx++) {
|
for (uint32_t idx = 0; idx < mARIAOwnsInvalidationList.Length(); idx++) {
|
||||||
Accessible* owner = mARIAOwnsInvalidationList[idx].mOwner;
|
Accessible* owner = mARIAOwnsInvalidationList[idx].mOwner;
|
||||||
|
if (owner->IsDefunct()) { // eventually died until we've got here
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Accessible* child = GetAccessible(mARIAOwnsInvalidationList[idx].mChild);
|
Accessible* child = GetAccessible(mARIAOwnsInvalidationList[idx].mChild);
|
||||||
if (!child) {
|
if (!child) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -681,8 +681,8 @@ protected:
|
|||||||
ARIAOwnsPair& operator =(const ARIAOwnsPair& aPair)
|
ARIAOwnsPair& operator =(const ARIAOwnsPair& aPair)
|
||||||
{ mOwner = aPair.mOwner; mChild = aPair.mChild; return *this; }
|
{ mOwner = aPair.mOwner; mChild = aPair.mChild; return *this; }
|
||||||
|
|
||||||
Accessible* mOwner;
|
nsRefPtr<Accessible> mOwner;
|
||||||
nsIContent* mChild;
|
nsCOMPtr<nsIContent> mChild;
|
||||||
};
|
};
|
||||||
nsTArray<ARIAOwnsPair> mARIAOwnsInvalidationList;
|
nsTArray<ARIAOwnsPair> mARIAOwnsInvalidationList;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user