diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim index c9135628c0..d92ad977f1 100644 --- a/src/testdir/test_registers.vim +++ b/src/testdir/test_registers.vim @@ -641,4 +641,22 @@ func Test_execute_reg_as_ex_cmd() 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 b383830c95..d6ed2cd972 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1039, /**/ 1038, /**/ diff --git a/src/winclip.c b/src/winclip.c index 767bf1c71e..db88e6787d 100644 --- a/src/winclip.c +++ b/src/winclip.c @@ -422,7 +422,7 @@ clip_mch_request_selection(Clipboard_T *cbd) } } - if (str != NULL && *str != NUL) + if (str != NULL && metadata.txtlen != 0) { char_u *temp_clipboard; @@ -543,7 +543,7 @@ clip_mch_set_selection(Clipboard_T *cbd) if (lpszMem) { - vim_strncpy((char_u *)lpszMem, str, metadata.txtlen); + mch_memmove((char_u *)lpszMem, str, metadata.txtlen); GlobalUnlock(hMem); } }