ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/ambient.c
(Generate patch)

Comparing ray/src/rt/ambient.c (file contents):
Revision 2.97 by greg, Fri Aug 21 18:21:05 2015 UTC vs.
Revision 2.99 by greg, Thu Mar 3 22:44:10 2016 UTC

# Line 196 | Line 196 | setambient(void)                               /* initialize calculation */
196                  sprintf(errmsg, "cannot open ambient file \"%s\"", ambfile);
197                  error(SYSTEM, errmsg);
198          }
199 #if 0
200        flockfile(ambfp);                       /* application-level lock */
201 #endif
199   #ifdef  F_SETLKW
200          aflock(F_UNLCK);                        /* release file */
201   #endif
# Line 219 | Line 216 | ambdone(void)                  /* close ambient file and free memory
216                  lastpos = -1;
217          }
218                                          /* free ambient tree */
219 <        unloadatree(&atrunk, &avfree);
219 >        unloadatree(&atrunk, avfree);
220 >        freeambtree(NULL);
221                                          /* reset state variables */
222          avsum = 0.;
223          navsum = 0;
# Line 1087 | Line 1085 | freeambtree(                   /* free 8 ambient tree structs */
1085          AMBTREE  *atp
1086   )
1087   {
1088 <        atp->kid = atfreelist;
1088 >        if (atp == NULL) {      /* freeing free list? */
1089 >                while ((atp = atfreelist) != NULL) {
1090 >                        atfreelist = atp->kid;
1091 >                        free(atp);
1092 >                }
1093 >                return;
1094 >        }
1095 >        atp->kid = atfreelist;  /* else push node onto free list */
1096          atfreelist = atp;
1097   }
1098  
# Line 1229 | Line 1234 | sortambvals(                   /* resort ambient values */
1234                          oldatrunk = atrunk;
1235                          atrunk.alist = NULL;
1236                          atrunk.kid = NULL;
1237 <                        unloadatree(&oldatrunk, &avinsert);
1237 >                        unloadatree(&oldatrunk, avinsert);
1238                  }
1239          } else {                        /* sort memory by last access time */
1240                  /*
# Line 1246 | Line 1251 | sortambvals(                   /* resort ambient values */
1251                  eputs(errmsg);
1252   #endif
1253                  i_avlist = 0;
1254 <                unloadatree(&atrunk, &av2list); /* empty current tree */
1254 >                unloadatree(&atrunk, av2list);  /* empty current tree */
1255   #ifdef DEBUG
1256                  if (i_avlist < nambvals)
1257                          error(CONSISTENCY, "missing ambient values in sortambvals");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines