ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvs/xvidcore/src/utils/mem_align.c
Revision: 1.2
Committed: Wed Mar 20 00:27:57 2002 UTC (22 years, 6 months ago) by Isibaar
Content type: text/plain
Branch: MAIN
Changes since 1.1: +38 -0 lines
Log Message:
xvid_malloc/xvid_free

File Contents

# Content
1 #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 }