aboutsummaryrefslogtreecommitdiff
path: root/lib/std/heap.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-08-08 13:04:30 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-08-08 13:04:30 -0700
commita2f8c23a96d6124f1f263aa68087f18321e298c7 (patch)
tree0e8eacd47132abd35dda2b1ba295671b999e0206 /lib/std/heap.zig
parentcb9405cdbdd7c9dc30c84ea9a8a17ced2cae66af (diff)
downloadzig-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.zig6
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;
}