Skip to content

Commit 03e31d1

Browse files
Fixed: Fix ArrayIndexOutOfBoundsException thrown because length was less than 0 when selecting text from terminal buffer
java.lang.ArrayIndexOutOfBoundsException: src.length=132 srcPos=90 dst.length=16 dstPos=0 length=-2 at java.lang.System.arraycopy(System.java:469) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:597) at java.lang.StringBuilder.append(StringBuilder.java:191) at com.termux.terminal.TerminalBuffer.getSelectedText(TerminalBuffer.java:97) at com.termux.terminal.TerminalBuffer.getSelectedText(TerminalBuffer.java:57) at com.termux.terminal.TerminalBuffer.getSelectedText(TerminalBuffer.java:53) at com.termux.terminal.TerminalEmulator.getSelectedText(TerminalEmulator.java:2401) at com.termux.view.textselection.TextSelectionCursorController$1.onActionItemClicked(TextSelectionCursorController.java:140)
1 parent d24a04a commit 03e31d1

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

terminal-emulator/src/main/java/com/termux/terminal/TerminalBuffer.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,11 @@ public String getSelectedText(int selX1, int selY1, int selX2, int selY2, boolea
9393
if (c != ' ') lastPrintingCharIndex = i;
9494
}
9595
}
96-
if (lastPrintingCharIndex != -1)
97-
builder.append(line, x1Index, lastPrintingCharIndex - x1Index + 1);
96+
97+
int len = lastPrintingCharIndex - x1Index + 1;
98+
if (lastPrintingCharIndex != -1 && len > 0)
99+
builder.append(line, x1Index, len);
100+
98101
boolean lineFillsWidth = lastPrintingCharIndex == x2Index - 1;
99102
if ((!joinBackLines || !rowLineWrap) && (!joinFullLines || !lineFillsWidth)
100103
&& row < selY2 && row < mScreenRows - 1) builder.append('\n');

0 commit comments

Comments
 (0)