Fix IOOB exception in ViewDragHelper
If findPointerIndex returns -1, ignore the motion event. The
equivalent fix is done for other handlers of motion events as well.
Bug: 18186775
Change-Id: Ia7548335eeb84310510260381a8bcedf6556aa40
diff --git a/src/com/android/dialer/widget/ViewDragHelper.java b/src/com/android/dialer/widget/ViewDragHelper.java
index c0bc2ce..fe3ab82 100644
--- a/src/com/android/dialer/widget/ViewDragHelper.java
+++ b/src/com/android/dialer/widget/ViewDragHelper.java
@@ -21,6 +21,7 @@
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.VelocityTrackerCompat;
import android.support.v4.view.ViewCompat;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
@@ -1176,7 +1177,12 @@
case MotionEvent.ACTION_MOVE: {
if (mDragState == STATE_DRAGGING) {
- final int index = MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+ int index = MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+ if (index < 0) {
+ Log.e(TAG, "Pointer index for id " + mActivePointerId + " not found."
+ + " Skipping MotionEvent");
+ return;
+ }
final float x = MotionEventCompat.getX(ev, index);
final float y = MotionEventCompat.getY(ev, index);
final int idx = (int) (x - mLastMotionX[mActivePointerId]);