[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1105738: xterm: double-click can incorrectly add the preceding space to the selection



On Wed, May 14, 2025 at 02:10:51AM +0200, Vincent Lefevre wrote:
> On 2025-05-14 01:59:38 +0200, Vincent Lefevre wrote:
> > Package: xterm
> > Version: 398-1
> > Severity: normal
> > 
> > When I double-click on a word at the beginning of a line such that
> > this word is preceded by spaces, one space is incorrectly included
> > in the selection.
> > 
> > For instance, type
> > 
> >   printf "%$((COLUMNS+1))syz\n" x
> > 
> > which gives a line full of spaces and the word "xyz" on the next
> > physical line. If I double-click on the word "xyz", only "xyz"
> > is highlighted as expected, but if I paste the selection with
> > the middle-button, I get " xyz", i.e. with a preceding space.
> 
> Note that this is a regression in the latest version.
> Version 397-1 did not have this issue.

That was from

     * fix several minor issues reported by Coverity.

but in addressing a warning about overflow, I overlooked the special case
where lastcol is one past the right margin, in this function:

static int
Length(TScreen *screen,
       int row,
       int scol,
       int ecol)
{
    CLineData *ld = GET_LINEDATA(screen, row);
    const int lastcol = LastTextCol(screen, ld, row);

    if (ecol > lastcol)
	ecol = lastcol;
    if (ecol < scol)	/* scol is less than lastcol in this instance */
	ecol = scol;
    return (ecol - scol + 1);
}

I'll amend that to ensure the function returns a positive value...

-- 
Thomas E. Dickey <dickey@invisible-island.net>
https://invisible-island.net

Attachment: signature.asc
Description: PGP signature


Reply to: