--- ray/src/common/octree.c 1989/10/14 10:56:32 1.2 +++ ray/src/common/octree.c 1998/08/24 16:38:44 2.4 @@ -33,8 +33,8 @@ octalloc() /* allocate an octree */ errno = 0; if (octbi(freet) >= MAXOBLK) return(EMPTY); - if ((octblock[octbi(freet)] = (OCTREE *)malloc( - (unsigned)256*8*sizeof(OCTREE))) == NULL) + if ((octblock[octbi(freet)] = (OCTREE *)bmalloc( + (unsigned)OCTBLKSIZ*8*sizeof(OCTREE))) == NULL) return(EMPTY); } treetop += 8; @@ -53,6 +53,21 @@ register OCTREE ot; octfree(octkid(ot, i)); octkid(ot, 0) = ofreelist; ofreelist = ot; +} + + +octdone() /* free EVERYTHING */ +{ + register int i; + + for (i = 0; i < MAXOBLK; i++) { + if (octblock[i] == NULL) + break; + bfree((char *)octblock[i], (unsigned)256*8*sizeof(OCTREE)); + octblock[i] = NULL; + } + ofreelist = EMPTY; + treetop = 0; }