0
0
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:
Bram Moolenaar 2018-06-16 14:44:11 +02:00
parent 52d3aaeea4
commit 43dee181f5
3 changed files with 33 additions and 8 deletions

View File

@ -3372,8 +3372,9 @@ mch_print_start_line(int margin, int page_line)
}
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;
char_u ch;
char_u ch_buff[8];
@ -3508,8 +3509,15 @@ mch_print_text_out(char_u *p, int len UNUSED)
#ifdef FEAT_MBYTE
if (prt_do_conv)
{
/* Convert from multi-byte to 8-bit encoding */
tofree = p = string_convert(&prt_conv, p, &len);
if (p == NULL)
{
p = (char_u *)"";
len = 0;
}
}
if (prt_out_mbyte)
{

View File

@ -63,12 +63,27 @@ func Test_with_syntax()
endfunc
func Test_fname_with_spaces()
if has('postscript')
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!
if !has('postscript')
return
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
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

View File

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