forked from aniani/vim
patch 8.2.4418: crash when using special multi-byte character
Problem: Crash when using special multi-byte character. Solution: Don't use isalpha() for an arbitrary character.
This commit is contained in:
@@ -1644,6 +1644,12 @@ vim_isupper(int c)
|
|||||||
return isupper(c);
|
return isupper(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
vim_isalpha(int c)
|
||||||
|
{
|
||||||
|
return vim_islower(c) || vim_isupper(c);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
vim_toupper(int c)
|
vim_toupper(int c)
|
||||||
{
|
{
|
||||||
|
@@ -3626,7 +3626,7 @@ unix_expandpath(
|
|||||||
else if (path_end >= path + wildoff
|
else if (path_end >= path + wildoff
|
||||||
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
|
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
|
||||||
|| (!p_fic && (flags & EW_ICASE)
|
|| (!p_fic && (flags & EW_ICASE)
|
||||||
&& isalpha(PTR2CHAR(path_end)))))
|
&& vim_isalpha(PTR2CHAR(path_end)))))
|
||||||
e = p;
|
e = p;
|
||||||
if (has_mbyte)
|
if (has_mbyte)
|
||||||
{
|
{
|
||||||
|
@@ -50,6 +50,7 @@ int vim_isxdigit(int c);
|
|||||||
int vim_isbdigit(int c);
|
int vim_isbdigit(int c);
|
||||||
int vim_islower(int c);
|
int vim_islower(int c);
|
||||||
int vim_isupper(int c);
|
int vim_isupper(int c);
|
||||||
|
int vim_isalpha(int c);
|
||||||
int vim_toupper(int c);
|
int vim_toupper(int c);
|
||||||
int vim_tolower(int c);
|
int vim_tolower(int c);
|
||||||
char_u *skiptowhite(char_u *p);
|
char_u *skiptowhite(char_u *p);
|
||||||
@@ -63,5 +64,4 @@ int hexhex2nr(char_u *p);
|
|||||||
int rem_backslash(char_u *str);
|
int rem_backslash(char_u *str);
|
||||||
void backslash_halve(char_u *p);
|
void backslash_halve(char_u *p);
|
||||||
char_u *backslash_halve_save(char_u *p);
|
char_u *backslash_halve_save(char_u *p);
|
||||||
void ebcdic2ascii(char_u *buffer, int len);
|
|
||||||
/* vim: set ft=c : */
|
/* vim: set ft=c : */
|
||||||
|
@@ -110,4 +110,12 @@ func Test_verbose_pwd()
|
|||||||
call delete('Xautodir', 'rf')
|
call delete('Xautodir', 'rf')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_multibyte()
|
||||||
|
" using an invalid character should not cause a crash
|
||||||
|
set wic
|
||||||
|
call assert_fails('tc <20><><EFBFBD><EFBFBD><EFBFBD>*', 'E344:')
|
||||||
|
set nowic
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
4418,
|
||||||
/**/
|
/**/
|
||||||
4417,
|
4417,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user