diff options
author | Ron Yorston | 2021-04-29 08:36:21 +0100 |
---|---|---|
committer | Denys Vlasenko | 2021-04-30 01:40:27 +0200 |
commit | 0c42a6b072b48ff615e3960ad5829a2a117cc417 (patch) | |
tree | b0a7111231eec5e9e00f6512545e6b2f3ff6d7fd /editors | |
parent | b35eef5383a4e7a6fb60fcf3833654a0bb2245e0 (diff) | |
download | busybox-0c42a6b072b48ff615e3960ad5829a2a117cc417.zip busybox-0c42a6b072b48ff615e3960ad5829a2a117cc417.tar.gz |
vi: fix empty line range regression
Commit 7a8ceb4eb (vi: changes to line addresses for colon commands)
was supposed to address the issue:
When the last address is empty it should refer to the current line.
This was intended to allow ranges of the form '1,' with an empty
last address. It should have been expressed as:
When the last address is empty *and the second last isn't* it
should refer to the current line.
Otherwise a command like ':w' only writes the current line resulting
in serious loss of data.
function old new delta
colon 3906 3911 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 5/0) Total: 5 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors')
-rw-r--r-- | editors/vi.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/editors/vi.c b/editors/vi.c index 6a879fa..edcf842 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -2553,7 +2553,7 @@ static char *get_address(char *p, int *b, int *e) break; state = GET_SEPARATOR; } else { - if (state == GET_SEPARATOR && *e < 0) + if (state == GET_SEPARATOR && *b >= 0 && *e < 0) *e = count_lines(text, dot); break; } |