fix alloc bug
This commit is contained in:
parent
6fc645c9d2
commit
3a4af168b1
4
rtcore.h
4
rtcore.h
@ -293,7 +293,7 @@ RTC_API void *
|
|||||||
ArenaAlloc(arena *a, isize size, isize align, isize n, int flags)
|
ArenaAlloc(arena *a, isize size, isize align, isize n, int flags)
|
||||||
{
|
{
|
||||||
isize padding = -(usize)a->begin & (align - 1);
|
isize padding = -(usize)a->begin & (align - 1);
|
||||||
isize available = a->end - a->begin - padding;
|
isize available = (isize)(a->end - a->begin) - padding;
|
||||||
if (available < 0 || n > available / size)
|
if (available < 0 || n > available / size)
|
||||||
{
|
{
|
||||||
if (!(flags & ALLOC_SOFTFAIL))
|
if (!(flags & ALLOC_SOFTFAIL))
|
||||||
@ -301,7 +301,7 @@ ArenaAlloc(arena *a, isize size, isize align, isize n, int flags)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
void *p = a->begin + padding;
|
void *p = a->begin + padding;
|
||||||
a->begin += padding - n * size;
|
a->begin += padding + n * size;
|
||||||
return (flags & ALLOC_NOZERO) ? p : memset(p, 0, n * size);
|
return (flags & ALLOC_NOZERO) ? p : memset(p, 0, n * size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user