xref: /csrg-svn/usr.bin/pascal/libpc/DISPOSE.c (revision 62092)
140865Sbostic /*-
2*62092Sbostic  * Copyright (c) 1979, 1993
3*62092Sbostic  *	The Regents of the University of California.  All rights reserved.
440865Sbostic  *
540865Sbostic  * %sccs.include.redist.c%
640865Sbostic  */
71647Smckusick 
840865Sbostic #ifndef lint
9*62092Sbostic static char sccsid[] = "@(#)DISPOSE.c	8.1 (Berkeley) 06/06/93";
1040865Sbostic #endif /* not lint */
111647Smckusick 
121647Smckusick #include	"h00vars.h"
131647Smckusick 
DISPOSE(var,siz)143001Smckusic DISPOSE(var, siz)
151647Smckusick 	register char	**var;	/* pointer to pointer being deallocated */
163001Smckusic 	long		siz;	/* sizeof(bletch) */
171647Smckusick {
183001Smckusic 	register int size = siz;
193001Smckusic 
201647Smckusick 	if (*var == 0 || *var + size > _maxptr || *var < _minptr) {
213867Smckusic 		ERROR("Pointer value out of legal range\n", 0);
221647Smckusick 		return;
231647Smckusick 	}
241647Smckusick 	free(*var);
251647Smckusick 	if (*var == _minptr)
261647Smckusick 		_minptr += size;
271647Smckusick 	if (*var + size == _maxptr)
281647Smckusick 		_maxptr -= size;
291647Smckusick 	*var = (char *)(0);
301647Smckusick }
31