Module Name: src Committed By: christos Date: Sat Jan 21 17:12:56 UTC 2012
Modified Files: src/dist/nvi/common: delete.c src/dist/nvi/vi: getc.c Log Message: PR/10367: Mason Loring Bliss: fix delete word near end of file. Patch from tnozaki. To generate a diff of this commit: cvs rdiff -u -r1.1.1.2 -r1.2 src/dist/nvi/common/delete.c cvs rdiff -u -r1.3 -r1.4 src/dist/nvi/vi/getc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/dist/nvi/common/delete.c diff -u src/dist/nvi/common/delete.c:1.1.1.2 src/dist/nvi/common/delete.c:1.2 --- src/dist/nvi/common/delete.c:1.1.1.2 Sun May 18 10:29:41 2008 +++ src/dist/nvi/common/delete.c Sat Jan 21 12:12:56 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: delete.c,v 1.1.1.2 2008/05/18 14:29:41 aymeric Exp $ */ +/* $NetBSD: delete.c,v 1.2 2012/01/21 17:12:56 christos Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 @@ -89,6 +89,11 @@ del(SCR *sp, MARK *fm, MARK *tm, int lmo /* Case 3 -- delete within a single line. */ if (tm->lno == fm->lno) { + if (tm->cno == fm->cno) { + if (db_delete(sp, fm->lno)) + return (1); + goto done; + } if (db_get(sp, fm->lno, DBG_FATAL, &p, &len)) return (1); GET_SPACE_RETW(sp, bp, blen, len); Index: src/dist/nvi/vi/getc.c diff -u src/dist/nvi/vi/getc.c:1.3 src/dist/nvi/vi/getc.c:1.4 --- src/dist/nvi/vi/getc.c:1.3 Mon Mar 21 10:53:04 2011 +++ src/dist/nvi/vi/getc.c Sat Jan 21 12:12:56 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: getc.c,v 1.3 2011/03/21 14:53:04 tnozaki Exp $ */ +/* $NetBSD: getc.c,v 1.4 2012/01/21 17:12:56 christos Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 @@ -143,10 +143,12 @@ cs_fspace(SCR *sp, VCS *csp) int cs_fblank(SCR *sp, VCS *csp) { + if (csp->cs_flags == CS_EMP) + return (0); for (;;) { if (cs_next(sp, csp)) return (1); - if (csp->cs_flags == CS_EOL || csp->cs_flags == CS_EMP || + if (csp->cs_flags == CS_EOL || (csp->cs_flags == 0 && ISBLANK2(csp->cs_ch))) continue; break; @@ -212,10 +214,12 @@ cs_prev(SCR *sp, VCS *csp) int cs_bblank(SCR *sp, VCS *csp) { + if (csp->cs_flags == CS_EMP) + return (0); for (;;) { if (cs_prev(sp, csp)) return (1); - if (csp->cs_flags == CS_EOL || csp->cs_flags == CS_EMP || + if (csp->cs_flags == CS_EOL || (csp->cs_flags == 0 && ISBLANK2(csp->cs_ch))) continue; break;