[net.sources.bugs] Bug fix for vn

wpl@burdvax.UUCP (03/24/87)

I had a problem with vn.  Once in a while, vn would crash with a floating
point exception (divide by zero).  I tracked to bug to the following lines
of code in reader.c.

	/* for conditional is abnormal - expected exit is break */
	for (count = 0; count < HDR_LINES && fgets(buf,RECLEN-1,Fpread) != NULL; ++count)
	{

		/* reset position and bail out at first non-header line */
		if (index(buf,':') == NULL)
		{
			pos = ftell(Fpread);
			pos -= strlen(buf);
			fseek (Fpread,pos,0);
			break;
		}


Vn had thought the header ended when there was a line with no ':'. This is
a false assumption (I think), a header ends when there is a line that doesn't
begin with ' ' or '\t' and has no embedded ':'.
Below is the fix to the above code.


	/* for conditional is abnormal - expected exit is break */
	for (count = 0; count < HDR_LINES && fgets(buf,RECLEN-1,Fpread) != NULL; ++count)
	{

		/* reset position and bail out at first non-header line */
		if (index(buf,':') == NULL)
		{
                        if ((buf[0] != '\t') && (buf[0] != ' ')) {
				pos = ftell(Fpread);
				pos -= strlen(buf);
				fseek (Fpread,pos,0);
				break;
                        }
		}


Bill Loftus
-- 
William P Loftus			UUCP:   wpl@burdvax, sword@excalibur
Unisys/Paoli Research Center		ARPA: 	wpl@burdvax.prc.unisys.com
PO Box 517				BITNET: SWORD@VUVAXCOM
Paoli, PA 19301                         215-648-7222 (work) 215-649-0633 (home)