changeset 15945:f0f8754e3bf5 v8.1.0978

patch 8.1.0978: blob not tested with Perl commit https://github.com/vim/vim/commit/2472ae81dff8c30f5d63db8ad2c937deae8be646 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 23 15:04:17 2019 +0100 patch 8.1.0978: blob not tested with Perl Problem: Blob not tested with Perl. Solution: Add more test coverage. Fixes a crash. (Dominique Pelle, closes #4037)
author Bram Moolenaar <Bram@vim.org>
date Sat, 23 Feb 2019 15:15:12 +0100
parents 3f73b6c0f10f
children 0a6b08858dda
files src/if_perl.xs src/testdir/test_perl.vim src/version.c
diffstat 3 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -1570,7 +1570,7 @@ Blob(SV* sv)
     newsv = newSVpv("0z", 2);
     for (i = 0; i < len; i++)
     {
-	sprintf(buf, "%02X", s[i]);
+	sprintf(buf, "%02X", (unsigned char)(s[i]));
 	sv_catpvn(newsv, buf, 2);
     }
     RETVAL = newsv;
--- a/src/testdir/test_perl.vim
+++ b/src/testdir/test_perl.vim
@@ -29,6 +29,13 @@ EOF
   call assert_equal('abc/def/', getline('$'))
 endfunc
 
+funct Test_VIM_Blob()
+  call assert_equal('0z',         perleval('VIM::Blob("")'))
+  call assert_equal('0z31326162', perleval('VIM::Blob("12ab")'))
+  call assert_equal('0z00010203', perleval('VIM::Blob("\x00\x01\x02\x03")'))
+  call assert_equal('0z8081FEFF', perleval('VIM::Blob("\x80\x81\xfe\xff")'))
+endfunc
+
 func Test_buffer_Delete()
   new
   call setline(1, ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
--- a/src/version.c
+++ b/src/version.c
@@ -780,6 +780,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    978,
+/**/
     977,
 /**/
     976,