[comp.lang.pascal] uvapc bug fixes

scl@sasha.acc.Virginia.EDU (Steve Losen) (11/14/89)

While porting uvapc (the Univ. of Virginia Pascal compiler) to some other
architectures, we found a few bugs.  These are null pointer dereferences,
which the AT&T 3b2 and 3b15 do not mind.  (If you dereference 0, you quietly
get 0).  While these are indeed bugs, they do not cause uvapc to produce
incorrect results on the 3b2 or 3b15.

I have made a new binary distribution of uvapc available via anonymous
ftp to virginia.edu in the file uvapc.cpio.  Remember, this version
only works on the AT&T 3b2 and 3b15.

Educational institutions may have a full source distribution if they promise
not to redistribute.  Contact me for details.  For those of you who already
have source, here are the diffs.

*** p_decl.c.orig	Sun Nov 12 11:58:05 1989
--- p_decl.c	Sun Nov 12 11:10:17 1989
***************
*** 805,810 ****
--- 805,811 ----
  
  		OBJECT *dummy;
  		dummy = ob_define(id_noname, OB_FIELD, 0);
+ 		dummy->ob_type = std_universal;
  		dummy->ob.field.tag = tag;
  		dummy->ob.field.tagval = tagval;
  	}
*** p_stmt.c.orig	Sun Nov 12 11:58:10 1989
--- p_stmt.c	Sun Nov 12 11:40:08 1989
***************
*** 261,267 ****
  	 * Finally, you may not pass a conformant array actual paramter
  	 * to a _value_ conformant array formal parameter.
  	 */
! 	if (fptype->ob_kind == OB_CONFARRAY) {
  		aptype = (fpkind == OB_VALPARM) ? p_expression(&node, stop) :
  			p_var_access(&node, VA_VARPARM, stop);
  		if (ck_conforms (aptype, fptype) &&
--- 261,267 ----
  	 * Finally, you may not pass a conformant array actual paramter
  	 * to a _value_ conformant array formal parameter.
  	 */
! 	if (fptype && fptype->ob_kind == OB_CONFARRAY) {
  		aptype = (fpkind == OB_VALPARM) ? p_expression(&node, stop) :
  			p_var_access(&node, VA_VARPARM, stop);
  		if (ck_conforms (aptype, fptype) &&


Steve Losen     scl@virginia.edu
University of Virginia Academic Computing Center