summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston2021-04-29 08:36:21 +0100
committerDenys Vlasenko2021-04-30 01:40:27 +0200
commit0c42a6b072b48ff615e3960ad5829a2a117cc417 (patch)
treeb0a7111231eec5e9e00f6512545e6b2f3ff6d7fd
parentb35eef5383a4e7a6fb60fcf3833654a0bb2245e0 (diff)
downloadbusybox-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>
-rw-r--r--editors/vi.c2
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;
}