ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/trunk/xvidcore/src/utils/mem_align.c
Revision: 43
Committed: Thu Mar 21 00:28:33 2002 UTC (22 years, 6 months ago) by edgomez
Content type: text/plain
File size: 670 byte(s)
Error occurred while calculating annotation data.
Log Message:
I prefer this traditional way of alignment

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 - 1)&(~(uint32_t)(alignment - 1)));
22 *(mem_ptr - 1) = (uint8_t)(mem_ptr - tmp);
23 return (void *) mem_ptr;
24 }
25 }
26
27 return NULL;
28
29 }
30
31 void xvid_free(void *mem_ptr)
32 {
33
34 uint8_t *real_ptr;
35
36 real_ptr = (uint8_t*)mem_ptr;
37
38 free(real_ptr - *(real_ptr -1));
39
40 }