mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-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)
43dee181f5
This commit is contained in:
parent
2ea619c10b
commit
8441af37d8
@ -2882,8 +2882,9 @@ void mch_print_start_line(int margin, int page_line)
|
|||||||
prt_half_width = FALSE;
|
prt_half_width = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mch_print_text_out(char_u *p, size_t len)
|
int mch_print_text_out(char_u *textp, size_t len)
|
||||||
{
|
{
|
||||||
|
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];
|
||||||
@ -2996,6 +2997,10 @@ int mch_print_text_out(char_u *p, size_t len)
|
|||||||
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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user