]> git.8kb.co.uk Git - dataflex/df32func/blob - src/c/memman.c
Add missing new files
[dataflex/df32func] / src / c / memman.c
1 /*-------------------------------------------------------------------------\r
2  * memman.c\r
3  *     wrappers around malloc/realloc/free\r
4  *\r
5  * Copyright (c) 2007-2015, glyn@8kb.co.uk\r
6  * Author: Glyn Astill <glyn@8kb.co.uk>\r
7  *\r
8  *-------------------------------------------------------------------------\r
9  */\r
10 \r
11 \r
12 #include <stdio.h>\r
13 #include <stdlib.h>\r
14 #include <assert.h>\r
15 \r
16 /*\r
17  * Wrappers around malloc/realloc/free\r
18  */\r
19 void * wmalloc(unsigned int size) {\r
20     char         *result;\r
21 \r
22     if ((result = malloc(size)) == NULL) {\r
23         fprintf(stderr, "Failed to malloc %d bytes\n", size);\r
24         exit(1);\r
25     }\r
26     return result;\r
27 }\r
28 \r
29 void * wrealloc(void *iptr, unsigned int size) {\r
30     char         *result;\r
31 \r
32     assert(iptr != NULL);\r
33 \r
34     if ((result = realloc(iptr, size)) == NULL) {\r
35         fprintf(stderr, "Failed to realloc %d bytes\n", size);\r
36         exit(1);\r
37     }\r
38     return result;\r
39 }\r
40 \r
41 void wfree(void *iptr){\r
42    assert(iptr != NULL);\r
43 \r
44     if (iptr) {\r
45        free(iptr);\r
46     }\r
47     iptr = NULL;\r
48 }\r
49 \r
50 /*\r
51  * Reallocate memory block pointed to by iptr in chunks of chunk_size when\r
52  * required_size is greater than value pointed to be allocated_size.\r
53  * Sets value of allocated_size to current allocation.\r
54  */\r
55 void * reallocate_block(void *iptr, int *allocated_size, int required_size, int chunk_size) {\r
56     void        *result;\r
57 \r
58     if (*allocated_size >= required_size)\r
59         return iptr;\r
60 \r
61     *allocated_size += (((required_size-*allocated_size)/chunk_size)+1)*chunk_size;\r
62 \r
63     result = wrealloc(iptr, *allocated_size);\r
64 \r
65     return result;\r
66 }\r