diff options
author | Oliver Kiddle <opk@zsh.org> | 2014-11-13 09:58:34 +0100 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2014-11-13 09:58:34 +0100 |
commit | 99382e689dc41731ee225221964d58732ff7a4e6 (patch) | |
tree | c356a9806e974c528edf3ec7b77272b13ea4a465 | |
parent | e33411990e1353e5d39379adb56e325ab92ce28c (diff) | |
download | zsh-99382e689dc41731ee225221964d58732ff7a4e6.tar.gz zsh-99382e689dc41731ee225221964d58732ff7a4e6.tar.xz zsh-99382e689dc41731ee225221964d58732ff7a4e6.zip |
33669: allow an empty line to be yanked with yy
This by allocating 1 byte instead of 0 for the empty buffer.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/Zle/zle_utils.c | 5 | ||||
-rw-r--r-- | Test/X02zlevi.ztst | 7 |
3 files changed, 15 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 64d0820be..5609754f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-11-13 Oliver Kiddle <opk@zsh.org> + + * 33669: Src/Zle/zle_utils.c, Test/X02zlevi.ztst: allow an empty + line to be yanked with yy by allocating 1 byte instead of 0 + 2014-11-11 Peter Stephenson <p.w.stephenson@ntlworld.com> * 33658: Doc/Zsh/options.yo: AUTO_CD depends on SHIN_STDIN. diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c index 03a2bdca7..f56063e82 100644 --- a/Src/Zle/zle_utils.c +++ b/Src/Zle/zle_utils.c @@ -916,7 +916,7 @@ cut(int i, int ct, int flags) void cuttext(ZLE_STRING_T line, int ct, int flags) { - if (!ct || zmod.flags & MOD_NULL) + if (!(ct || vilinerange) || zmod.flags & MOD_NULL) return; UNMETACHECK(); @@ -989,8 +989,9 @@ cuttext(ZLE_STRING_T line, int ct, int flags) cutbuf.buf = s; cutbuf.len += ct; } else { + /* don't alloc 0 bytes; length 0 occurs for blank lines in vi mode */ cutbuf.buf = realloc((char *)cutbuf.buf, - (cutbuf.len + ct) * ZLE_CHAR_SIZE); + (cutbuf.len + (ct ? ct : 1)) * ZLE_CHAR_SIZE); ZS_memcpy(cutbuf.buf + cutbuf.len, line, ct); cutbuf.len += ct; } diff --git a/Test/X02zlevi.ztst b/Test/X02zlevi.ztst index 7e5385bfe..4b9c4d91f 100644 --- a/Test/X02zlevi.ztst +++ b/Test/X02zlevi.ztst @@ -30,6 +30,13 @@ >BUFFER: one >CURSOR: 0 + zletest $'1\eo\eyya2\epa3' +0:yank and paste blank line +>BUFFER: 1 +>2 +>3 +>CURSOR: 5 + zletest $' four\eO\C-v\tthree\eO two\eOone\e3J' 0:join lines with line count >BUFFER: one two three |