patch 8.2.1039: cannot put NUL byte on clipboard
Problem: Cannot put NUL byte on clipboard.
Solution: Use the text length. (Christian Brabandt, closes #6312,
closes #6149)
diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim
index c913562..d92ad97 100644
--- a/src/testdir/test_registers.vim
+++ b/src/testdir/test_registers.vim
@@ -641,4 +641,22 @@
call assert_equal(repeat('abcdefghijklmnopqrstuvwxyz', 312), str)
endfunc
+" Test for clipboard registers with ASCII NUL
+func Test_clipboard_nul()
+ CheckFeature clipboard_working
+ new
+
+ " Test for putting ASCII NUL into the clipboard
+ set clipboard=unnamed
+ call append(0, "\ntest")
+ normal ggyyp
+ call assert_equal("^@test^@", strtrans(getreg('*')))
+ call assert_equal(getline(1), getline(2))
+ let b = split(execute(":reg *"), "\n")
+ call assert_match('"\*\s*\^@test\^J',b[1])
+
+ set clipboard&vim
+ bwipe!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index b383830..d6ed2cd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1039,
+/**/
1038,
/**/
1037,
diff --git a/src/winclip.c b/src/winclip.c
index 767bf1c..db88e67 100644
--- a/src/winclip.c
+++ b/src/winclip.c
@@ -422,7 +422,7 @@
}
}
- if (str != NULL && *str != NUL)
+ if (str != NULL && metadata.txtlen != 0)
{
char_u *temp_clipboard;
@@ -543,7 +543,7 @@
if (lpszMem)
{
- vim_strncpy((char_u *)lpszMem, str, metadata.txtlen);
+ mch_memmove((char_u *)lpszMem, str, metadata.txtlen);
GlobalUnlock(hMem);
}
}