Patch 8.1.0056
Problem:    Crash when using :hardcopy with illegal byte.
Solution:   Check for string_convert() returning NULL. (Dominique Pelle)
Files:      src/hardcopy.c, src/testdir/test_hardcopy.vim


*** ../vim-8.1.0055/src/hardcopy.c      2018-02-11 15:38:21.000000000 +0100
--- src/hardcopy.c      2018-06-16 14:43:41.918213746 +0200
***************
*** 3372,3379 ****
  }
  
      int
! mch_print_text_out(char_u *p, int len UNUSED)
  {
      int               need_break;
      char_u    ch;
      char_u      ch_buff[8];
--- 3372,3380 ----
  }
  
      int
! 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,3515 ****
--- 3509,3523 ----
  
  #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)
      {
*** ../vim-8.1.0055/src/testdir/test_hardcopy.vim       2017-10-26 
23:41:07.000000000 +0200
--- src/testdir/test_hardcopy.vim       2018-06-16 14:39:00.343781251 +0200
***************
*** 63,74 ****
  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!
    endif
  endfunc
--- 63,89 ----
  endfunc
  
  func Test_fname_with_spaces()
!   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
+ 
*** ../vim-8.1.0055/src/version.c       2018-06-13 21:27:20.213366293 +0200
--- src/version.c       2018-06-16 14:39:45.695527854 +0200
***************
*** 763,764 ****
--- 763,766 ----
  {   /* Add new patch number below this line */
+ /**/
+     56,
  /**/

-- 
The real
trick is
this: to
keep the
lines as
short as
possible
and keep
the size
the same
yet free
from the
need for
hyphena-
Dammit!!  (Matthew Winn)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui