From 4faf2b9d28f4151e41fe2f008bb95b98afc2d8d1 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Wed, 13 Oct 2021 23:34:38 +0500 Subject: [PATCH] Fixed: Fix CSI Delete Ps Column(s) (DECDC) Firstly, `TerminalBuffer.blockSet()` was throwing the exception since `sx + w > mColumns` which was technically passed by TerminalEmulator.blockClear()`. Actual value would be `mCursorRow + columnsToMove + columnsToDelete > mColumns`. Secondly, the call to `blockClear()` should not be needed since it the `blockCopy()` would overwrite the columns to be deleted on copy. Run `printf "\e['~"` to delete 1 column and `printf "\e[3'~"` to delete 3 columns. Run `printf "\e[3'}"` to insert 2 columns. java.lang.IllegalArgumentException: Illegal arguments! blockSet(78, 0, 1, 30, 32, 56, 30) at com.termux.terminal.TerminalBuffer.blockSet(TerminalBuffer.java:397) at com.termux.terminal.TerminalEmulator.blockClear(TerminalEmulator.java:2035) at com.termux.terminal.TerminalEmulator.processCodePoint(TerminalEmulator.java:799) --- .../src/main/java/com/termux/terminal/TerminalEmulator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java index bf95aafd..471c5df5 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java @@ -796,7 +796,6 @@ public final class TerminalEmulator { int columnsToDelete = Math.min(getArg0(1), columnsAfterCursor); int columnsToMove = columnsAfterCursor - columnsToDelete; mScreen.blockCopy(mCursorCol + columnsToDelete, 0, columnsToMove, mRows, mCursorCol, 0); - blockClear(mCursorRow + columnsToMove, 0, columnsToDelete, mRows); } else { unknownSequence(b); }