aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSheldon Hearn <sheldonh@FreeBSD.org>2002-01-31 13:28:37 +0000
committerSheldon Hearn <sheldonh@FreeBSD.org>2002-01-31 13:28:37 +0000
commitb4f6fcd3948cc6ed6013a2b59996dbb7e743b88a (patch)
tree72da00fe7d47c53e6b1fc7d9b2464d169a40b7f4
parent55228c2a54c4fd0f650a51fa16b96b2849bf2ac1 (diff)
downloadsrc-b4f6fcd3948cc6ed6013a2b59996dbb7e743b88a.tar.gz
src-b4f6fcd3948cc6ed6013a2b59996dbb7e743b88a.zip
Fix core dump in left-right screen scrolling for long lines.
The nvi maintainer expects this patch to be included in the upcoming nvi-1.81.6 unless a better fix presents itself. The MFC reminder below should be taken as a cue to MFC rev 1.1.1.2 of vs_relative.c as well. PR: bin/26869 Reported by: Alex Semenyaka <alexs@snark.ratmir.ru> Obtained from: skimo@kotnet.org (via "Alexey V. Neyman" <alex.neyman@auriga.ru>) MFC after: 1 month
Notes
Notes: svn path=/vendor/nvi/dist/; revision=90019
-rw-r--r--contrib/nvi/vi/vs_line.c5
-rw-r--r--contrib/nvi/vi/vs_smap.c4
2 files changed, 6 insertions, 3 deletions
diff --git a/contrib/nvi/vi/vs_line.c b/contrib/nvi/vi/vs_line.c
index b439de925ce1..e48d5ef5e917 100644
--- a/contrib/nvi/vi/vs_line.c
+++ b/contrib/nvi/vi/vs_line.c
@@ -267,7 +267,10 @@ empty: (void)gp->scr_addstr(sp,
cols_per_screen = sp->cols;
/* Put starting info for this line in the cache. */
- if (scno != skip_cols) {
+ if (offset_in_line >= len) {
+ smp->c_sboff = offset_in_line;
+ smp->c_scoff = 255;
+ } else if (scno != skip_cols) {
smp->c_sboff = offset_in_line;
smp->c_scoff =
offset_in_char = chlen - (scno - skip_cols);
diff --git a/contrib/nvi/vi/vs_smap.c b/contrib/nvi/vi/vs_smap.c
index af38057e815f..18d7942b742a 100644
--- a/contrib/nvi/vi/vs_smap.c
+++ b/contrib/nvi/vi/vs_smap.c
@@ -743,7 +743,7 @@ vs_sm_up(sp, rp, count, scmd, smp)
if (!SMAP_CACHE(smp) && vs_line(sp, smp, NULL, NULL))
return (1);
rp->lno = smp->lno;
- rp->cno = smp->c_sboff;
+ rp->cno = smp->c_scoff == 255 ? 0 : smp->c_sboff;
return (0);
}
@@ -958,7 +958,7 @@ vs_sm_down(sp, rp, count, scmd, smp)
if (!SMAP_CACHE(smp) && vs_line(sp, smp, NULL, NULL))
return (1);
rp->lno = smp->lno;
- rp->cno = smp->c_sboff;
+ rp->cno = smp->c_scoff == 255 ? 0 : smp->c_sboff;
return (0);
}