From 886867ce6a33198e89db7ba449f375a6e1dece23 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Fri, 15 Mar 2019 13:13:20 +0100 Subject: [PATCH] LineReader encounters exception if tabs used in dummy terminal, fixes #367 --- .../main/java/org/jline/reader/impl/LineReaderImpl.java | 2 +- .../test/java/org/jline/reader/impl/CompletionTest.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java b/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java index 3739a083f..a6f68ecd3 100644 --- a/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java +++ b/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java @@ -4750,7 +4750,7 @@ else if (item instanceof List) { @SuppressWarnings("unchecked") protected void toColumns(Object items, int width, int maxWidth, AttributedStringBuilder sb, Candidate selection, String completed, boolean rowsFirst, int[] out) { - if (maxWidth <= 0) { + if (maxWidth <= 0 || width <= 0) { return; } // This is a group diff --git a/reader/src/test/java/org/jline/reader/impl/CompletionTest.java b/reader/src/test/java/org/jline/reader/impl/CompletionTest.java index c288151ce..5d45b155a 100644 --- a/reader/src/test/java/org/jline/reader/impl/CompletionTest.java +++ b/reader/src/test/java/org/jline/reader/impl/CompletionTest.java @@ -19,6 +19,7 @@ import org.jline.reader.impl.completer.ArgumentCompleter; import org.jline.reader.impl.completer.NullCompleter; import org.jline.reader.impl.completer.StringsCompleter; +import org.jline.terminal.Size; import org.junit.Test; import static org.junit.Assert.assertFalse; @@ -144,4 +145,12 @@ public void testMenuOrder() { assertLine("ab_helloWorld ", new TestBuffer("a\t\t\n\n")); } + @Test + public void testDumbTerminalNoSizeComplete() { + terminal.setSize(new Size()); + reader.setCompleter(new StringsCompleter(Arrays.asList("ae_helloWorld", "ad_helloWorld", "ac_helloWorld", "ab_helloWorld", "aa_helloWorld"))); + + assertLine("a", new TestBuffer("a\t\n\n")); + } + }