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)
|
||||
{
|
||||
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 (!(flags & ALLOC_SOFTFAIL))
|
||||
@ -301,7 +301,7 @@ ArenaAlloc(arena *a, isize size, isize align, isize n, int flags)
|
||||
return NULL;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user