diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index ec80525d3b..52484b5a91 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -2026,31 +2026,35 @@ public class CellLayout extends ViewGroup { dirtyEdges &= ~whichEdge; } + int leftEdgeLength = leftEdge.length; + int rightEdgeLength = rightEdge.length; + int topEdgeLength = topEdge.length; + int bottomEdgeLength = bottomEdge.length; switch (whichEdge) { case LEFT: for (int i = cs.cellY; i < cs.cellY + cs.spanY; i++) { - if (leftEdge[i] == cs.cellX + cs.spanX) { + if (i >= 0 && i < leftEdgeLength && leftEdge[i] == cs.cellX + cs.spanX) { return true; } } break; case RIGHT: for (int i = cs.cellY; i < cs.cellY + cs.spanY; i++) { - if (rightEdge[i] == cs.cellX) { + if (i >= 0 && i < rightEdgeLength && rightEdge[i] == cs.cellX) { return true; } } break; case TOP: for (int i = cs.cellX; i < cs.cellX + cs.spanX; i++) { - if (topEdge[i] == cs.cellY + cs.spanY) { + if (i >= 0 && i < topEdgeLength && topEdge[i] == cs.cellY + cs.spanY) { return true; } } break; case BOTTOM: for (int i = cs.cellX; i < cs.cellX + cs.spanX; i++) { - if (bottomEdge[i] == cs.cellY) { + if (i >= 0 && i < bottomEdgeLength && bottomEdge[i] == cs.cellY) { return true; } }