[4bsd-f77 #28] F77 bombs if your array bounds are out of order

4.2 BSD f77 bug reports 4bsd-f77 at utah-cs.UUCP
Wed Aug 8 06:15:37 AEST 1984


From: Donn Seeley <donn at utah-cs.arpa>

Subject: F77 doesn't say anything if your array bounds are out of order
Index:	usr.bin/f77/src/f77pass1/proc.c 4.2BSD

Description:
	F77 does not remark on out-of-order dimension declarators.  Not
	only is this not in accord with the standard, it breaks things
	(see below).  This bug fix is from Bob Corbett at UC Berkeley,
	care of Jerry Berkman.

Repeat-By:
	Clip out the following subroutine and compile it:

	----------------------------------------------------------------
		subroutine axmpl()

		integer m(10:1)

		m(5) = 0

		return
		end
	----------------------------------------------------------------

	The compiler will say something like 'Termination code 139'
	and you will be left with a core dump of the assembler.

Fix:
	Add some code to setbound() in proc.c:

	----------------------------------------------------------------
	*** /tmp/,RCSt1005919	Fri Jul 20 22:17:01 1984
	--- proc.c	Thu Jul 19 12:04:20 1984
	***************
	*** 1327,1332
				}
			if( ISCONST(q) )
				{
				p->dims[i].dimsize = q;
				p->dims[i].dimexpr = (expptr) PNULL;
				}

	--- 1334,1346 -----
				}
			if( ISCONST(q) )
				{
	+ 			if (ISINT(q->headblock.vtype)
	+ 				&&  q->constblock.const.ci <= 0)
	+ 				{
	+ 				err("array bounds out of sequence");
	+ 				frexpr(q);
	+ 				q = ICON(0);
	+ 				}
				p->dims[i].dimsize = q;
				p->dims[i].dimexpr = (expptr) PNULL;
				}
	----------------------------------------------------------------

Donn Seeley    University of Utah CS Dept    donn at utah-cs.arpa
40 46' 6"N 111 50' 34"W    (801) 581-5668    decvax!utah-cs!donn



More information about the Comp.bugs.4bsd.ucb-fixes mailing list