--- ray/src/util/glaresrc.c 1991/04/30 16:39:39 1.15 +++ ray/src/util/glaresrc.c 2003/02/22 02:07:30 2.4 @@ -1,9 +1,6 @@ -/* Copyright (c) 1991 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: glaresrc.c,v 2.4 2003/02/22 02:07:30 greg Exp $"; #endif - /* * Gather samples and compute glare sources. */ @@ -51,9 +48,11 @@ analyze() /* analyze our scene */ for (v = vsize; v >= -vsize; v--) { close_sources(v); #ifndef DEBUG - if (verbose) + if (verbose) { fprintf(stderr, "%s: analyzing... %3ld%%\r", progname, 100L*(vsize-v)/(2*vsize)); + fflush(stderr); + } #endif getviewspan(v, spanbr); left = hsize + 1; @@ -79,7 +78,7 @@ analyze() /* analyze our scene */ if (left < h) addsrcspan(newspan(left,h,v,spanbr)); } - free((char *)spanbr); + free((void *)spanbr); close_allsrcs(); } @@ -239,7 +238,7 @@ struct source *sp, *ap; sp->brt = (sp->brt*sp->dom + ap->brt*ap->dom) / (sp->dom + ap->dom); } - free((char *)ap); + free((void *)ap); } @@ -380,9 +379,13 @@ register struct source *sp; sp->dom += d; } } + freespans(sp); + if (sp->dom <= FTINY) { /* must be right at edge of image */ + free((void *)sp); + return; + } sp->brt /= (double)n; compdir(sp->dir, (int)(hsum/sp->dom), (int)(vsum/sp->dom)); - freespans(sp); sp->next = donelist; donelist = sp; if (verbose) @@ -452,7 +455,7 @@ register struct source *s; indirect[i].n += d; } freespans(s); - free((char *)s); + free((void *)s); } @@ -461,7 +464,8 @@ struct source *sp; { register struct srcspan *ss; - for (ss = sp->first; ss != NULL; ss = ss->next) - free((char *)ss); - sp->first = NULL; + while ((ss = sp->first) != NULL) { + sp->first = ss->next; + free((void *)ss); + } }