From 0727bfd98ca31b0d93298de27a0c15fa5cdbadde Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Sat, 4 Jul 2026 12:29:15 +0200 Subject: Fix memory hole in quiet mode at ProgressBar --- src/main/java/com/it_jaros/jscanner/ProgressBar.java | 17 ++++++++++------- src/main/java/com/it_jaros/jscanner/Scanner.java | 1 - 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/it_jaros/jscanner/ProgressBar.java b/src/main/java/com/it_jaros/jscanner/ProgressBar.java index 3300b73..fb22c4c 100644 --- a/src/main/java/com/it_jaros/jscanner/ProgressBar.java +++ b/src/main/java/com/it_jaros/jscanner/ProgressBar.java @@ -47,10 +47,12 @@ public class ProgressBar { } public void start() { - if (quiet) { - return; + if (!quiet) { + System.out.print("Scanning targets...\n\n"); } - System.out.print("Scanning targets...\n\n"); + + // although we don't print anything, we still need to + // gc all the done hosts ui.scheduleAtFixedRate(() -> { lock.lock(); drawProgress(false); @@ -76,7 +78,9 @@ public class ProgressBar { if (!last) { // move cursor up again - System.out.print("\u001b[" + hosts.size() + "A"); + if (!quiet) { + System.out.print("\u001b[" + hosts.size() + "A"); + } } } @@ -87,6 +91,7 @@ public class ProgressBar { } private void drawBar(Progress progress) { + if (quiet) return; System.out.print("\u001b[2K\r"); // clear whole line System.out.println(createBar( progress.host(), @@ -116,9 +121,7 @@ public class ProgressBar { try { ui.awaitTermination(1, TimeUnit.SECONDS); // we need to draw one last time for the 100% to appear - if (!quiet) { - drawProgress(true); - } + drawProgress(true); } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } diff --git a/src/main/java/com/it_jaros/jscanner/Scanner.java b/src/main/java/com/it_jaros/jscanner/Scanner.java index bfb7ac6..fc4755e 100644 --- a/src/main/java/com/it_jaros/jscanner/Scanner.java +++ b/src/main/java/com/it_jaros/jscanner/Scanner.java @@ -7,7 +7,6 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.*; import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.LockSupport; -- cgit v1.3.1