mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.1.0056: crash when using :hardcopy with illegal byte
Problem: Crash when using :hardcopy with illegal byte. Solution: Check for string_convert() returning NULL. (Dominique Pelle)
This commit is contained in:
parent
52d3aaeea4
commit
43dee181f5
@ -3372,8 +3372,9 @@ mch_print_start_line(int margin, int page_line)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
mch_print_text_out(char_u *p, int len UNUSED)
|
mch_print_text_out(char_u *textp, int len UNUSED)
|
||||||
{
|
{
|
||||||
|
char_u *p = textp;
|
||||||
int need_break;
|
int need_break;
|
||||||
char_u ch;
|
char_u ch;
|
||||||
char_u ch_buff[8];
|
char_u ch_buff[8];
|
||||||
@ -3508,8 +3509,15 @@ mch_print_text_out(char_u *p, int len UNUSED)
|
|||||||
|
|
||||||
#ifdef FEAT_MBYTE
|
#ifdef FEAT_MBYTE
|
||||||
if (prt_do_conv)
|
if (prt_do_conv)
|
||||||
|
{
|
||||||
/* Convert from multi-byte to 8-bit encoding */
|
/* Convert from multi-byte to 8-bit encoding */
|
||||||
tofree = p = string_convert(&prt_conv, p, &len);
|
tofree = p = string_convert(&prt_conv, p, &len);
|
||||||
|
if (p == NULL)
|
||||||
|
{
|
||||||
|
p = (char_u *)"";
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (prt_out_mbyte)
|
if (prt_out_mbyte)
|
||||||
{
|
{
|
||||||
|
@ -63,12 +63,27 @@ func Test_with_syntax()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_fname_with_spaces()
|
func Test_fname_with_spaces()
|
||||||
if has('postscript')
|
if !has('postscript')
|
||||||
split t\ e\ s\ t.txt
|
return
|
||||||
call setline(1, ['just', 'some', 'text'])
|
|
||||||
hardcopy > %.ps
|
|
||||||
call assert_true(filereadable('t e s t.txt.ps'))
|
|
||||||
call delete('t e s t.txt.ps')
|
|
||||||
bwipe!
|
|
||||||
endif
|
endif
|
||||||
|
split t\ e\ s\ t.txt
|
||||||
|
call setline(1, ['just', 'some', 'text'])
|
||||||
|
hardcopy > %.ps
|
||||||
|
call assert_true(filereadable('t e s t.txt.ps'))
|
||||||
|
call delete('t e s t.txt.ps')
|
||||||
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_illegal_byte()
|
||||||
|
if !has('postscript') || &enc != 'utf-8'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
new
|
||||||
|
" conversion of 0xff will fail, this used to cause a crash
|
||||||
|
call setline(1, "\xff")
|
||||||
|
hardcopy >Xpstest
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
call delete('Xpstest')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
@ -761,6 +761,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 */
|
||||||
|
/**/
|
||||||
|
56,
|
||||||
/**/
|
/**/
|
||||||
55,
|
55,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user