1
0
forked from aniani/vim

patch 8.2.5108: retab test disabled because it hangs on MS-Windows

Problem:    Retab test disabled because it hangs on MS-Windows.
Solution:   Also set got_int at the other place a overlong text is detected.
This commit is contained in:
Bram Moolenaar
2022-06-16 12:10:48 +01:00
parent 93a1096fe4
commit 308660bd26
3 changed files with 20 additions and 16 deletions

View File

@@ -1612,6 +1612,20 @@ copy_indent(int size, char_u *src)
return TRUE; return TRUE;
} }
/*
* Give a "resulting text too long" error and maybe set got_int.
*/
static void
emsg_text_too_long(void)
{
emsg(_(e_resulting_text_too_long));
#ifdef FEAT_EVAL
// when not inside a try/catch set got_int to break out of any loop
if (trylevel == 0)
#endif
got_int = TRUE;
}
/* /*
* ":retab". * ":retab".
*/ */
@@ -1749,7 +1763,7 @@ ex_retab(exarg_T *eap)
new_len = old_len - col + start_col + len + 1; new_len = old_len - col + start_col + len + 1;
if (new_len <= 0 || new_len >= MAXCOL) if (new_len <= 0 || new_len >= MAXCOL)
{ {
emsg(_(e_resulting_text_too_long)); emsg_text_too_long();
break; break;
} }
new_line = alloc(new_len); new_line = alloc(new_len);
@@ -1780,13 +1794,7 @@ ex_retab(exarg_T *eap)
vcol += chartabsize(ptr + col, (colnr_T)vcol); vcol += chartabsize(ptr + col, (colnr_T)vcol);
if (vcol >= MAXCOL) if (vcol >= MAXCOL)
{ {
emsg(_(e_resulting_text_too_long)); emsg_text_too_long();
// when not inside a try/catch set got_int to break out of any
// loop
#ifdef FEAT_EVAL
if (trylevel == 0)
#endif
got_int = TRUE;
break; break;
} }
if (has_mbyte) if (has_mbyte)

View File

@@ -92,7 +92,7 @@ func RetabLoop()
endfunc endfunc
func Test_retab_endless() func Test_retab_endless()
" inside try/catch we catch the error message " inside try/catch we can catch the error message
call setline(1, "\t0\t") call setline(1, "\t0\t")
let caught = 'no' let caught = 'no'
try try
@@ -106,13 +106,7 @@ func Test_retab_endless()
endfunc endfunc
func Test_nocatch_retab_endless() func Test_nocatch_retab_endless()
" FIXME: why does this hang on MS-Windows? Is got_int reset somewhere? " when not inside try/catch an interrupt is generated to get out of loops
if has('win32')
let g:skipped_reason = "does not work on MS-Windows"
return
endif
" not inside try/catch an interrupt is generated to get out of loops
call setline(1, "\t0\t") call setline(1, "\t0\t")
call assert_fails('call RetabLoop()', ['E1240:', 'Interrupted']) call assert_fails('call RetabLoop()', ['E1240:', 'Interrupted'])

View File

@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
5108,
/**/ /**/
5107, 5107,
/**/ /**/