summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/hardcopy.c10
-rw-r--r--src/testdir/test_hardcopy.vim29
-rw-r--r--src/version.c2
3 files changed, 33 insertions, 8 deletions
diff --git a/src/hardcopy.c b/src/hardcopy.c
index 91f62c39f..420ceb763 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -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)
{
diff --git a/src/testdir/test_hardcopy.vim b/src/testdir/test_hardcopy.vim
index f630556be..ced13b107 100644
--- a/src/testdir/test_hardcopy.vim
+++ b/src/testdir/test_hardcopy.vim
@@ -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
+
diff --git a/src/version.c b/src/version.c
index 8d5864903..bd8efafeb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 56,
+/**/
55,
/**/
54,