mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
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:
@ -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
|
||||
|
@ -754,6 +754,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1039,
|
||||
/**/
|
||||
1038,
|
||||
/**/
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user