wip update - use the fetched mesa gallium paths and files.
[AROS.git] / compiler / stdc / free.c
blob98ea2c69d5a40527c29def82152943e1be5e945e
1 /*
2 Copyright © 1995-2012, The AROS Development Team. All rights reserved.
3 $Id$
5 C99 function free().
6 */
8 #include "__stdc_intbase.h"
9 #include "__memalign.h"
11 #include <exec/memory.h>
12 #include <proto/exec.h>
14 /*****************************************************************************
16 NAME */
17 #include <stdlib.h>
19 void free (
21 /* SYNOPSIS */
22 void * memory)
24 /* FUNCTION
25 Return memory allocated with malloc() or a similar function to the
26 system.
28 INPUTS
29 memory - The result of the previous call to malloc(), etc. or
30 NULL.
32 RESULT
33 None.
35 NOTES
37 EXAMPLE
39 BUGS
41 SEE ALSO
42 malloc()
44 INTERNALS
46 ******************************************************************************/
48 if (memory)
50 struct StdCIntBase *StdCBase = (struct StdCIntBase *)__aros_getbase_StdCBase();
52 unsigned char *mem;
53 size_t size;
55 mem = ((UBYTE *)memory) - AROS_ALIGN(sizeof(size_t));
57 size = *((size_t *) mem);
58 if (size == MEMALIGN_MAGIC)
59 free(((void **) mem)[-1]);
60 else {
61 size += AROS_ALIGN(sizeof(size_t));
62 FreePooled (StdCBase->mempool, mem, size);
66 } /* free */