diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-08-08 13:04:30 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-08-08 13:04:30 -0700 |
| commit | a2f8c23a96d6124f1f263aa68087f18321e298c7 (patch) | |
| tree | 0e8eacd47132abd35dda2b1ba295671b999e0206 /lib/std/heap.zig | |
| parent | cb9405cdbdd7c9dc30c84ea9a8a17ced2cae66af (diff) | |
| download | zig-a2f8c23a96d6124f1f263aa68087f18321e298c7.tar.gz zig-a2f8c23a96d6124f1f263aa68087f18321e298c7.zip | |
std.heap.page_allocator: Windows support for growing without remapping
Diffstat (limited to 'lib/std/heap.zig')
| -rw-r--r-- | lib/std/heap.zig | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/std/heap.zig b/lib/std/heap.zig index 0c9dbca369..4a2837d408 100644 --- a/lib/std/heap.zig +++ b/lib/std/heap.zig @@ -225,7 +225,7 @@ const PageAllocator = struct { w.VirtualFree(buf_unaligned.ptr, 0, w.MEM_RELEASE); return 0; } - if (new_size < buf_unaligned.len) { + if (new_size <= buf_unaligned.len) { const base_addr = @ptrToInt(buf_unaligned.ptr); const old_addr_end = base_addr + buf_unaligned.len; const new_addr_end = mem.alignForward(base_addr + new_size, mem.page_size); @@ -240,10 +240,10 @@ const PageAllocator = struct { } return alignPageAllocLen(new_size_aligned, new_size, len_align); } - if (new_size == buf_unaligned.len) { + const old_size_aligned = mem.alignForward(buf_unaligned.len, mem.page_size); + if (new_size_aligned <= old_size_aligned) { return alignPageAllocLen(new_size_aligned, new_size, len_align); } - // new_size > buf_unaligned.len not implemented return error.OutOfMemory; } |
