Bug 1425030: ia2Accessible::get_accessibleWithCaret: Gracefully handle null returned from SelectionManager::AccessibleWithCaret. r?surkov draft
authorJames Teh <jteh@mozilla.com>
Tue, 12 Dec 2017 13:38:34 +1000
changeset 711695 aed9de74f9ed698338977a77f57fca7fbcad65c2
parent 711178 defccba824aa91e8d4d820b1defaadfdca34bac7
child 743840 89ab453c0142d2a6ee26ca57a6b013d04206583b
push id93104
push userbmo:jteh@mozilla.com
push dateThu, 14 Dec 2017 12:21:18 +0000
reviewerssurkov
bugs1425030
milestone59.0a1
Bug 1425030: ia2Accessible::get_accessibleWithCaret: Gracefully handle null returned from SelectionManager::AccessibleWithCaret. r?surkov We weren't checking for null previously, thus causing a crash when there was no caret. MozReview-Commit-ID: 6NNRafcVPhb
accessible/windows/ia2/ia2Accessible.cpp
--- a/accessible/windows/ia2/ia2Accessible.cpp
+++ b/accessible/windows/ia2/ia2Accessible.cpp
@@ -517,17 +517,17 @@ ia2Accessible::get_accessibleWithCaret(I
   *aCaretOffset = -1;
 
   AccessibleWrap* acc = static_cast<AccessibleWrap*>(this);
   if (acc->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
 
   int32_t caretOffset = -1;
   Accessible* accWithCaret = SelectionMgr()->AccessibleWithCaret(&caretOffset);
-  if (acc->Document() != accWithCaret->Document())
+  if (!accWithCaret || acc->Document() != accWithCaret->Document())
     return S_FALSE;
 
   Accessible* child = accWithCaret;
   while (!child->IsDoc() && child != acc)
     child = child->Parent();
 
   if (child != acc)
     return S_FALSE;