Parent Directory | Revision Log
Revision 1.2 - (view) (download)
1 : | Isibaar | 1.2 | #include <stdlib.h> |
2 : | #include <stdio.h> | ||
3 : | #include "mem_align.h" | ||
4 : | |||
5 : | void *xvid_malloc(size_t size, uint8_t alignment) | ||
6 : | { | ||
7 : | uint8_t *mem_ptr; | ||
8 : | |||
9 : | if(alignment == 0) | ||
10 : | { | ||
11 : | if((mem_ptr = (uint8_t *) malloc(size + 1)) != NULL) { | ||
12 : | *mem_ptr = 0; | ||
13 : | return (void *) mem_ptr++; | ||
14 : | } | ||
15 : | } | ||
16 : | else | ||
17 : | { | ||
18 : | uint8_t *tmp; | ||
19 : | |||
20 : | if((tmp = (uint8_t *) malloc(size + alignment)) != NULL) { | ||
21 : | mem_ptr = (uint8_t *) (((uint32_t) tmp / alignment) * alignment + alignment); | ||
22 : | *(mem_ptr - 1) = (alignment - 1) - ((uint32_t) tmp % alignment); | ||
23 : | return (void *) mem_ptr; | ||
24 : | } | ||
25 : | } | ||
26 : | |||
27 : | return NULL; | ||
28 : | } | ||
29 : | |||
30 : | void xvid_free(void *mem_ptr) | ||
31 : | { | ||
32 : | uint8_t *tmp; | ||
33 : | |||
34 : | tmp = (uint8_t *) mem_ptr - 1; | ||
35 : | mem_ptr = tmp - *tmp; | ||
36 : | |||
37 : | free(mem_ptr); | ||
38 : | } |
No admin address has been configured | ViewVC Help |
Powered by ViewVC 1.0.4 |