Path: utzoo!attcan!uunet!ginosko!gem.mps.ohio-state.edu!tut.cis.ohio-state.edu!mailrus!ames!haven!mimsy!chris From: chris@mimsy.UUCP (Chris Torek) Newsgroups: comp.unix.questions Subject: Re: compiler error: schain botch Message-ID: <19909@mimsy.UUCP> Date: 1 Oct 89 05:57:13 GMT References: <5919@pitt.UUCP> Reply-To: chris@mimsy.umd.edu Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742 Lines: 37 This is an old bug. Here is the recommended fix. (Incidentally, this bug usually only surfaces when a function contains a number of `goto' statements. Fuel for comp.lang.c.noise.about.goto :-) ) ------- pftn.c ------- *************** *** 1922,1926 **** p = clist; while( p ){ ! register struct symtab *r, *next; q = p; --- 1926,1930 ---- p = clist; while( p ){ ! register struct symtab *next, **t, *r; q = p; *************** *** 1930,1933 **** --- 1934,1945 ---- if( q == p || q->stype == TNULL )break; if( (r = relook(q)) != q ) { + /* move q in schain list */ + t = &schain[q->slevel]; + while( *t && *t != q ) + t = &(*t)->snext; + if( *t ) + *t = r; + else + cerror("schain botch 2"); *r = *q; q->stype = TNULL; -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@cs.umd.edu Path: uunet!mimsy!chris