From c35d51fb70804f7c96bf26ff07065596606580d2 Mon Sep 17 00:00:00 2001 From: yungtravla Date: Sun, 8 Sep 2019 03:40:38 +1000 Subject: [PATCH 1/2] fix ArrayIndexOutOfBoundsException when sDots[][] index >= length --- .../com/andrognito/patternlockview/PatternLockView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java index 1624fd0..d82c79d 100755 --- a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java +++ b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java @@ -112,6 +112,7 @@ public class PatternLockView extends View { private float mHitFactor = 0.6f; // Made static so that the static inner class can use it + private static Dot[][] sDots; private static int sDotCount; private boolean mAspectRatioEnabled; @@ -578,6 +579,13 @@ public void setViewMode(@PatternViewMode int patternViewMode) { public void setDotCount(int dotCount) { sDotCount = dotCount; + sDots = new Dot[dotCount][dotCount]; + for (int i = 0; i < dotCount; i++) { + for (int j = 0; j < dotCount; j++) { + sDots[i][j] = new Dot(i, j); + } + } + mPatternSize = sDotCount * sDotCount; mPattern = new ArrayList<>(mPatternSize); mPatternDrawLookup = new boolean[sDotCount][sDotCount]; @@ -1149,7 +1157,6 @@ public static class Dot implements Parcelable { private int mRow; private int mColumn; - private static Dot[][] sDots; static { sDots = new Dot[sDotCount][sDotCount]; From be234ae3be814c9fb249dbeb13df0ccf3b9348f1 Mon Sep 17 00:00:00 2001 From: yungtravla Date: Sun, 8 Sep 2019 03:45:14 +1000 Subject: [PATCH 2/2] Update PatternLockView.java --- .../com/andrognito/patternlockview/PatternLockView.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java index d82c79d..8da9333 100755 --- a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java +++ b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java @@ -586,11 +586,11 @@ public void setDotCount(int dotCount) { } } - mPatternSize = sDotCount * sDotCount; + mPatternSize = dotCount * dotCount; mPattern = new ArrayList<>(mPatternSize); - mPatternDrawLookup = new boolean[sDotCount][sDotCount]; + mPatternDrawLookup = new boolean[dotCount][dotCount]; - mDotStates = new DotState[sDotCount][sDotCount]; + mDotStates = new DotState[dotCount][dotCount]; for (int i = 0; i < sDotCount; i++) { for (int j = 0; j < sDotCount; j++) { mDotStates[i][j] = new DotState();