--- ray/src/rt/freeobjmem.c 1992/11/22 10:58:10 2.1 +++ ray/src/rt/freeobjmem.c 2003/02/25 02:47:22 2.5 @@ -1,16 +1,21 @@ -/* Copyright (c) 1992 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: freeobjmem.c,v 2.5 2003/02/25 02:47:22 greg Exp $"; #endif - /* * Free memory associated with object(s) + * + * External symbols declared in ray.h */ -#include "standard.h" -#include "object.h" +#include "copyright.h" + +#include "ray.h" #include "otypes.h" +#include "face.h" +#include "cone.h" +#include "instance.h" +#include "data.h" +#include "font.h" int @@ -43,44 +48,39 @@ register OBJREC *op; freetext(op); return(1); case MAT_CLIP: /* clipping surface */ - free(op->os); + case MAT_SPOT: /* spot light source */ + free((void *)op->os); op->os = NULL; return(1); - case MAT_SPOT: /* spot light source */ - return(0); - default: + } #ifdef DEBUG - objerror(op, WARNING, "cannot free structure"); + objerror(op, WARNING, "cannot free structure"); #endif - return(0); - } + return(0); } int -free_objs(on, no, rn) /* free no object structures starting w/ on */ +free_objs(on, no) /* free some object structures */ register OBJECT on; OBJECT no; -long rn; { int nfreed; register OBJREC *op; for (nfreed = 0; no-- > 0; on++) { op = objptr(on); - if (op->os != NULL && op->lastrno < rn) + if (op->os != NULL) nfreed += free_os(op); } return(nfreed); } +void free_objmem() /* free all object cache memory */ { - extern long raynum; - - free_objs(0, nobjects, raynum); + free_objs(0, nobjects); freedata(NULL); - freepict(NULL); freefont(NULL); }