]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix Cursor Horizontal Absolute clipping
authorTom de Vries <tdevries@suse.de>
Wed, 23 Jul 2025 18:28:46 +0000 (20:28 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 23 Jul 2025 18:28:46 +0000 (20:28 +0200)
I looked at the tuiterm implementation of Cursor Horizontal Absolute:
...
    proc _csi_G {args} {
set arg [_default [lindex $args 0] 1]

_log_cur "Cursor Horizontal Absolute ($arg)" {
    variable _cur_col
    variable _cols

    set _cur_col [expr {min ($arg - 1, $_cols)}]
}
    }
...
and noticed a problem with the clipping behavior.

If we have say $_cols == 80, and we do _csi_G 81 we get $_cur_col == 80, while
$_cur_col is zero-based and should be in the 0..79 range.

Fix this by using:
...
    set _cur_col [expr {min ($arg, $_cols)} - 1]
...
which gets us $_cur_col == 79.

Add two boundary tests to gdb.tui/tuiterm.exp.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/testsuite/gdb.tui/tuiterm.exp
gdb/testsuite/lib/tuiterm.exp

index 9dc2402562f5589fc32132edaa7a3877dc7a12c0..fff7c37a56e492339d01919790fc4a7f7b3b4329 100644 (file)
@@ -435,6 +435,22 @@ proc test_horizontal_absolute { } {
        "qrstuvwx"
        "yz01234 "
     } 3 2
+
+    Term::_csi_G 8
+    check "cursor horizontal absolute 3" {
+       "abcdefgh"
+       "ijklmnop"
+       "qrstuvwx"
+       "yz01234 "
+    } 7 2
+
+    Term::_csi_G 9
+    check "cursor horizontal absolute 4" {
+       "abcdefgh"
+       "ijklmnop"
+       "qrstuvwx"
+       "yz01234 "
+    } 7 2
 }
 
 proc test_cursor_position { } {
index a0cd199aed35d83a3ad87c90ac762ef9a19d0235..71ef6a4eacd9d0928fd5f554306fec5c493e3863 100644 (file)
@@ -251,7 +251,7 @@ namespace eval Term {
            variable _cur_col
            variable _cols
 
-           set _cur_col [expr {min ($arg - 1, $_cols)}]
+           set _cur_col [expr {min ($arg, $_cols)} - 1]
        }
     }