void* MikMod_realloc(void *data, size_t size)
{
if (data)
{
int origAlign = ((int)get_pointer(data))&0x0F;
unsigned char *newPtr = (unsigned char *)realloc(get_pointer(data), size + ALIGN_STRIDE + sizeof(void*));
int newAlign = ((int)newPtr)&0x0F;
if (origAlign == newAlign) {
return align_pointer((char*)newPtr, ALIGN_STRIDE);
}
if ((origAlign == 0) && (newAlign == 8 )) {
memmove(newPtr,newPtr+8,size);
return align_pointer((char*)newPtr, ALIGN_STRIDE);
}
if ((origAlign == 8 ) && (newAlign == 0)) {
memmove(newPtr+8,newPtr,size);
return align_pointer((char*)newPtr, ALIGN_STRIDE);
}
newAlign=newAlign;
}
return MikMod_malloc(size);
}
u mnie takie coś pomogło...