From 0bc37e5d325465ca968f914edc15772bbefe506e Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 20 Sep 2014 13:00:20 +0400 Subject: [PATCH] gui: fix jump manager --- .../src/main/java/jadx/gui/utils/JumpManager.java | 11 ++++++++--- .../test/groovy/jadx/gui/tests/TestJumpManager.groovy | 9 +++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java b/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java index bf2b341a..aa305dae 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/JumpManager.java @@ -26,7 +26,7 @@ public class JumpManager { } private Position getCurrent() { - if (currentPos < list.size()) { + if (currentPos >= 0 && currentPos < list.size()) { return list.get(currentPos); } return null; @@ -41,9 +41,14 @@ public class JumpManager { } public Position getNext() { + int size = list.size(); + if (size == 0) { + currentPos = 0; + return null; + } int newPos = currentPos + 1; - if (newPos >= list.size()) { - currentPos = list.size() - 1; + if (newPos >= size) { + currentPos = size - 1; return null; } Position position = list.get(newPos); diff --git a/jadx-gui/src/test/groovy/jadx/gui/tests/TestJumpManager.groovy b/jadx-gui/src/test/groovy/jadx/gui/tests/TestJumpManager.groovy index 9339f1c0..09c8de1c 100644 --- a/jadx-gui/src/test/groovy/jadx/gui/tests/TestJumpManager.groovy +++ b/jadx-gui/src/test/groovy/jadx/gui/tests/TestJumpManager.groovy @@ -18,6 +18,15 @@ class TestJumpManager extends Specification { jm.getNext() == null } + def "empty history 2"() { + expect: + jm.getPrev() == null + jm.getNext() == null + jm.getPrev() == null + jm.getNext() == null + jm.getPrev() == null + } + def "1 element"() { when: jm.addPosition(Mock(Position)) -- GitLab