jscanner

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c8561ba308b74d32833dcc870ba512b79c8a261d
parent 51dffeae16f9a51c8d7260972be2d86c79fa35d3
Author: Matthias Jaros <jaros@mailbox.org>
Date:   Sat,  4 Jul 2026 12:29:15 +0200

Fix memory hole in quiet mode at ProgressBar

Diffstat:
Msrc/main/java/com/it_jaros/jscanner/ProgressBar.java | 17++++++++++-------
Msrc/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 @@ -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 @@ -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;