Mercurial > vim
changeset 20976:599b29b6e540 v8.2.1039
patch 8.2.1039: cannot put NUL byte on clipboard
Commit: https://github.com/vim/vim/commit/25fd2672875351ff56a925284a03a900081f70c0
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jun 22 20:30:27 2020 +0200
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 https://github.com/vim/vim/issues/6312,
closes #6149)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 22 Jun 2020 20:45:03 +0200 |
parents | d25769ea2be3 |
children | 6953733825a7 |
files | src/testdir/test_registers.vim src/version.c src/winclip.c |
diffstat | 3 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1039, +/**/ 1038, /**/ 1037,
--- a/src/winclip.c +++ b/src/winclip.c @@ -422,7 +422,7 @@ clip_mch_request_selection(Clipboard_T * } } - 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); } }