fix alloc bug

This commit is contained in:
Kevin Trogant 2025-12-06 01:04:14 +01:00
parent 6fc645c9d2
commit 3a4af168b1

View File

@ -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);
}