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)
This commit is contained in:
Bram Moolenaar
2020-06-22 20:30:27 +02:00
parent b2b218d89b
commit 25fd267287
3 changed files with 22 additions and 2 deletions

View File

@ -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

View File

@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1039,
/**/
1038,
/**/

View File

@ -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);
}
}