--- mem_align.c 2002/03/08 02:44:58 1.1 +++ mem_align.c 2002/03/21 00:28:33 1.3 @@ -0,0 +1,40 @@ +#include +#include +#include "mem_align.h" + +void *xvid_malloc(size_t size, uint8_t alignment) +{ + uint8_t *mem_ptr; + + if(alignment == 0) + { + if((mem_ptr = (uint8_t *) malloc(size + 1)) != NULL) { + *mem_ptr = 0; + return (void *) mem_ptr++; + } + } + else + { + uint8_t *tmp; + + if((tmp = (uint8_t *) malloc(size + alignment)) != NULL) { + mem_ptr = (uint8_t *)((uint32_t)(tmp + alignment - 1)&(~(uint32_t)(alignment - 1))); + *(mem_ptr - 1) = (uint8_t)(mem_ptr - tmp); + return (void *) mem_ptr; + } + } + + return NULL; + +} + +void xvid_free(void *mem_ptr) +{ + + uint8_t *real_ptr; + + real_ptr = (uint8_t*)mem_ptr; + + free(real_ptr - *(real_ptr -1)); + +}