Bug 1250560 - Fix crash in HandleTouchEvent. r?roc draft
authorTing-Yu Lin <tlin@mozilla.com>
Sun, 28 Feb 2016 23:16:45 +0800
changeset 335288 0aa9e5398da1e4b66284fedbb530455b246facfc
parent 335075 5e0140b6d11821e0c2a2de25bc5431783f03380a
child 515107 6a8242ef8f957c577588a61ddf4c71b8cd2e07e5
push id11759
push usertlin@mozilla.com
push dateSun, 28 Feb 2016 15:18:06 +0000
reviewersroc
bugs1250560
milestone47.0a1
Bug 1250560 - Fix crash in HandleTouchEvent. r?roc When enabling "dom.w3c_pointer_events.enabled", we might get a eTouchCancel event without any touch data. That is, aEvent->touches is an empty array. We need to make sure it's non-empty before accessing aEvent->touches[0]. MozReview-Commit-ID: BQUsrJjHHEl
layout/base/AccessibleCaretEventHub.cpp
--- a/layout/base/AccessibleCaretEventHub.cpp
+++ b/layout/base/AccessibleCaretEventHub.cpp
@@ -541,16 +541,21 @@ AccessibleCaretEventHub::HandleMouseEven
   }
 
   return rv;
 }
 
 nsEventStatus
 AccessibleCaretEventHub::HandleTouchEvent(WidgetTouchEvent* aEvent)
 {
+  if (aEvent->touches.IsEmpty()) {
+    AC_LOG("%s: Receive a touch event without any touch data!", __FUNCTION__);
+    return nsEventStatus_eIgnore;
+  }
+
   nsEventStatus rv = nsEventStatus_eIgnore;
 
   int32_t id = (mActiveTouchId == kInvalidTouchId ?
                 aEvent->touches[0]->Identifier() : mActiveTouchId);
   nsPoint point = GetTouchEventPosition(aEvent, id);
 
   switch (aEvent->mMessage) {
   case eTouchStart: