From 63338cd5683d7d48a8bfca8c026543566d3f461b Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 23 Jul 2025 20:28:46 +0200 Subject: [PATCH] [gdb/testsuite] Fix Cursor Horizontal Absolute clipping 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 --- gdb/testsuite/gdb.tui/tuiterm.exp | 16 ++++++++++++++++ gdb/testsuite/lib/tuiterm.exp | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.tui/tuiterm.exp b/gdb/testsuite/gdb.tui/tuiterm.exp index 9dc2402562f..fff7c37a56e 100644 --- a/gdb/testsuite/gdb.tui/tuiterm.exp +++ b/gdb/testsuite/gdb.tui/tuiterm.exp @@ -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 { } { diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp index a0cd199aed3..71ef6a4eacd 100644 --- a/gdb/testsuite/lib/tuiterm.exp +++ b/gdb/testsuite/lib/tuiterm.exp @@ -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] } } -- 2.47.2