diff options
Diffstat (limited to 'usr.bin/vi')
-rw-r--r-- | usr.bin/vi/common/delete.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/usr.bin/vi/common/delete.c b/usr.bin/vi/common/delete.c index a6d0a814cc65..85eae5ffb296 100644 --- a/usr.bin/vi/common/delete.c +++ b/usr.bin/vi/common/delete.c @@ -119,13 +119,15 @@ delete(sp, ep, fm, tm, lmode) GETLINE_ERR(sp, fm->lno); return (1); } - GET_SPACE_RET(sp, bp, blen, len); - if (fm->cno != 0) - memmove(bp, p, fm->cno); - memmove(bp + fm->cno, p + (tm->cno + 1), len - (tm->cno + 1)); - if (file_sline(sp, ep, fm->lno, - bp, len - ((tm->cno - fm->cno) + 1))) - goto err; + if (len != 0) { + GET_SPACE_RET(sp, bp, blen, len); + if (fm->cno != 0) + memmove(bp, p, fm->cno); + memmove(bp + fm->cno, p + (tm->cno + 1), len - (tm->cno + 1)); + if (file_sline(sp, ep, fm->lno, + bp, len - ((tm->cno - fm->cno) + 1))) + goto err; + } goto done; } |