|
|
1.1 ! root 1: /* free.c ! 2: Free a buffer from within a memory block. ! 3: ! 4: Copyright (C) 1992 Ian Lance Taylor ! 5: ! 6: This file is part of the Taylor UUCP uuconf library. ! 7: ! 8: This library is free software; you can redistribute it and/or ! 9: modify it under the terms of the GNU Library General Public License ! 10: as published by the Free Software Foundation; either version 2 of ! 11: the License, or (at your option) any later version. ! 12: ! 13: This library is distributed in the hope that it will be useful, but ! 14: WITHOUT ANY WARRANTY; without even the implied warranty of ! 15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! 16: Library General Public License for more details. ! 17: ! 18: You should have received a copy of the GNU Library General Public ! 19: License along with this library; if not, write to the Free Software ! 20: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! 21: ! 22: The author of the program may be contacted at [email protected] or ! 23: c/o Infinity Development Systems, P.O. Box 520, Waltham, MA 02254. ! 24: */ ! 25: ! 26: #include "uucnfi.h" ! 27: ! 28: #if USE_RCS_ID ! 29: const char _uuconf_free_rcsid[] = "$Id: free.c,v 1.1 93/07/30 08:07:11 bin Exp Locker: bin $"; ! 30: #endif ! 31: ! 32: #include "alloc.h" ! 33: ! 34: /* Free memory allocated by uuconf_malloc. If the memory block is ! 35: NULL, this just calls free; this is convenient for a number of ! 36: routines. Otherwise, this will only do something if this was the ! 37: last buffer allocated for one of the memory blocks in the list; in ! 38: other cases, the memory is lost until the entire memory block is ! 39: freed. */ ! 40: ! 41: #if UUCONF_ANSI_C ! 42: void ! 43: #endif ! 44: uuconf_free (pblock, pbuf) ! 45: pointer pblock; ! 46: pointer pbuf; ! 47: { ! 48: struct sblock *q = (struct sblock *) pblock; ! 49: ! 50: if (pbuf == NULL) ! 51: return; ! 52: ! 53: if (q == NULL) ! 54: { ! 55: free (pbuf); ! 56: return; ! 57: } ! 58: ! 59: for (; q != NULL; q = q->qnext) ! 60: { ! 61: if (q->plast == pbuf) ! 62: { ! 63: q->ifree = (char *) pbuf - q->u.ab; ! 64: /* We could reset q->plast here, but it doesn't matter. */ ! 65: return; ! 66: } ! 67: } ! 68: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.