Bug 1427171 - prevent null pointer dereference when using return pointer from aContext->ARIARoleMap().
MozReview-Commit-ID: B2FkPtOSm4S
--- a/accessible/base/nsAccessibilityService.cpp
+++ b/accessible/base/nsAccessibilityService.cpp
@@ -1195,29 +1195,29 @@ nsAccessibilityService::CreateAccessible
}
}
// If table has strong ARIA role then all table descendants shouldn't
// expose their native roles.
if (!roleMapEntry && newAcc && aContext->HasStrongARIARole()) {
if (frame->AccessibleType() == eHTMLTableRowType) {
const nsRoleMapEntry* contextRoleMap = aContext->ARIARoleMap();
- if (!contextRoleMap->IsOfType(eTable))
+ if (contextRoleMap && !contextRoleMap->IsOfType(eTable))
roleMapEntry = &aria::gEmptyRoleMap;
} else if (frame->AccessibleType() == eHTMLTableCellType &&
aContext->ARIARoleMap() == &aria::gEmptyRoleMap) {
roleMapEntry = &aria::gEmptyRoleMap;
} else if (content->IsAnyOfHTMLElements(nsGkAtoms::dt,
nsGkAtoms::li,
nsGkAtoms::dd) ||
frame->AccessibleType() == eHTMLLiType) {
const nsRoleMapEntry* contextRoleMap = aContext->ARIARoleMap();
- if (!contextRoleMap->IsOfType(eList))
+ if (contextRoleMap && !contextRoleMap->IsOfType(eList))
roleMapEntry = &aria::gEmptyRoleMap;
}
}
}
// Accessible XBL types and deck stuff are used in XUL only currently.
if (!newAcc && content->IsXULElement()) {
// No accessible for not selected deck panel and its children.