1 /* ========================================================================
2  * Copyright 1988-2006 University of Washington
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *
11  * ========================================================================
12  */
13 
14 /*
15  * Program:	Free storage management routines
16  *
17  * Author:	Mark Crispin
18  *		Networks and Distributed Computing
19  *		Computing & Communications
20  *		University of Washington
21  *		Administration Building, AG-44
22  *		Seattle, WA  98195
23  *		Internet: MRC@CAC.Washington.EDU
24  *
25  * Date:	1 August 1988
26  * Last Edited:	30 August 2006
27  */
28 
29 /* Get a block of free storage
30  * Accepts: size of desired block
31  * Returns: free storage block
32  */
33 
fs_get(size_t size)34 void *fs_get (size_t size)
35 {
36   void *block = malloc (size ? size : (size_t) 1);
37   if (!block) fatal ("Out of memory");
38   return (block);
39 }
40 
41 
42 /* Resize a block of free storage
43  * Accepts: ** pointer to current block
44  *	    new size
45  */
46 
fs_resize(void ** block,size_t size)47 void fs_resize (void **block,size_t size)
48 {
49   if (!(*block = realloc (*block,size ? size : (size_t) 1)))
50     fatal ("Can't resize memory");
51 }
52 
53 
54 /* Return a block of free storage
55  * Accepts: ** pointer to free storage block
56  */
57 
fs_give(void ** block)58 void fs_give (void **block)
59 {
60   free (*block);
61   *block = NIL;
62 }
63