diff --git a/jadx-gui/src/main/java/jadx/gui/search/SearchTask.java b/jadx-gui/src/main/java/jadx/gui/search/SearchTask.java index d49e51695..a7993a066 100644 --- a/jadx-gui/src/main/java/jadx/gui/search/SearchTask.java +++ b/jadx-gui/src/main/java/jadx/gui/search/SearchTask.java @@ -3,6 +3,7 @@ package jadx.gui.search; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; @@ -65,6 +66,10 @@ public class SearchTask extends CancelableBackgroundTask { } public synchronized boolean addResult(JNode resultNode) { + if (isCanceled()) { + // ignore new results after cancel + return true; + } this.results.accept(resultNode); if (resultsLimit != 0 && resultsCount.incrementAndGet() >= resultsLimit) { cancel(); @@ -76,9 +81,9 @@ public class SearchTask extends CancelableBackgroundTask { public synchronized void waitTask() { if (future != null) { try { - future.get(); + future.get(2, TimeUnit.SECONDS); } catch (Exception e) { - LOG.error("Wait search task failed", e); + LOG.warn("Wait search task failed", e); } finally { future.cancel(true); future = null; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java index 9b94fd0c1..ac11a3265 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java @@ -406,7 +406,6 @@ public class SearchDialog extends CommonSearchDialog { private synchronized void stopSearchTask() { if (searchTask != null) { searchTask.cancel(); - searchTask.waitTask(); searchTask = null; } }