Problem: setcharsearch() does not clear last searched char properly.
Solution: Do not accept lastc_bytelen smaller than one. (closes #12398)
}
void
-set_last_csearch(int c, char_u *s UNUSED, int len UNUSED)
+set_last_csearch(int c, char_u *s, int len)
{
*lastc = c;
lastc_bytelen = len;
}
else // repeat previous search
{
- if (*lastc == NUL && lastc_bytelen == 1)
+ if (*lastc == NUL && lastc_bytelen <= 1)
return FAIL;
if (dir) // repeat in opposite direction
dir = -lastcdir;
return FAIL;
col -= (*mb_head_off)(p, p + col - 1) + 1;
}
- if (lastc_bytelen == 1)
+ if (lastc_bytelen <= 1)
{
if (p[col] == c && stop)
break;
" clear the character search
call setcharsearch({'char' : ''})
call assert_equal('', getcharsearch().char)
+ call assert_beeps('normal ;')
+ call assert_beeps('normal ,')
call assert_fails("call setcharsearch([])", 'E1206:')
enew!
call assert_equal([0, 1, 43, 0], getpos('.'))
normal! ,
call assert_equal([0, 1, 28, 0], getpos('.'))
+ call assert_equal('最', getcharsearch().char)
+ call setcharsearch({'char' : ''})
+ call assert_equal('', getcharsearch().char)
+ call assert_beeps('normal ;')
+ call assert_equal([0, 1, 28, 0], getpos('.'))
+ call assert_beeps('normal ,')
+ call assert_equal([0, 1, 28, 0], getpos('.'))
bw!
endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1555,
/**/
1554,
/**/