Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Mar 1996 09:55:22 +0100
From:      Wolfram Schneider <wosch@cs.tu-berlin.de>
To:        batie@agora.rdrop.com (Alan Batie), bugs@FreeBSD.ORG
Subject:   Re: vi core dump
Message-ID:  <199603010855.JAA25172@ole.cs.tu-berlin.de>
In-Reply-To: <199602290335.EAA01570@campa.panke.de>
References:  <m0trptJ-000AoBC@agora.rdrop.com> <199602290335.EAA01570@campa.panke.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Wolfram Schneider writes:
>In article <m0trptJ-000AoBC@agora.rdrop.com> batie@agora.rdrop.com (Alan Batie) writes:
>
>>The following sequence will cause vi to core dump:
>>
>>    vi
>>    0 5 * * * ~ba
>
>or '~a', '~i'
>
>Fix:

Argh! You need also fix the line number.

--- vi/v_ulcase.c	1996/03/01 09:33:31	1.1
+++ vi/v_ulcase.c	1996/03/01 09:39:21
@@ -84,6 +84,7 @@
 	u_long cnt;
 	char *p;
 
+	len = 0;
 	lno = vp->m_start.lno;
 	cno = vp->m_start.cno;
 
@@ -120,7 +121,10 @@
 
 	/* Check to see if we tried to move past EOF. */
 	if (file_gline(sp, ep, vp->m_final.lno, &len) == NULL) {
-		(void)file_gline(sp, ep, --vp->m_final.lno, &len);
+		/* line number start with 1, lno zero is illegal */
+		if (vp->m_final.lno > 1)
+			--vp->m_final.lno;
+		(void)file_gline(sp, ep, vp->m_final.lno, &len);
 		vp->m_final.cno = len == 0 ? 0 : len - 1;
 	}
 	return (0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603010855.JAA25172>