--- ray/src/util/glaresrc.c 1991/04/30 16:39:39 1.15 +++ ray/src/util/glaresrc.c 1993/06/07 10:32:02 2.3 @@ -51,9 +51,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; @@ -380,9 +382,13 @@ register struct source *sp; sp->dom += d; } } + freespans(sp); + if (sp->dom <= FTINY) { /* must be right at edge of image */ + free((char *)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) @@ -461,7 +467,8 @@ struct source *sp; { register struct srcspan *ss; - for (ss = sp->first; ss != NULL; ss = ss->next) + while ((ss = sp->first) != NULL) { + sp->first = ss->next; free((char *)ss); - sp->first = NULL; + } }