aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-04-16 19:11:37 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-04-16 19:11:37 -0400
commit4c03746926562e4e9650eec7c4361836fabba5af (patch)
treedd8c226fd18fc0b619803a4c90e10b30fc871b32 /std
parentb29241fc08a329c5d9b0f1b8abb0ac815c480296 (diff)
downloadzig-4c03746926562e4e9650eec7c4361836fabba5af.tar.gz
zig-4c03746926562e4e9650eec7c4361836fabba5af.zip
Revert "DirectAllocator: on windows, use HeapFree instead of HeapReAlloc to free memory."
This reverts commit 71bb8cd5370f52b5fef3b107069d4879b434e108. This broke the CI on Windows.
Diffstat (limited to 'std')
-rw-r--r--std/heap.zig25
1 files changed, 8 insertions, 17 deletions
diff --git a/std/heap.zig b/std/heap.zig
index e3bcdef923..c56afebbde 100644
--- a/std/heap.zig
+++ b/std/heap.zig
@@ -118,22 +118,14 @@ pub const DirectAllocator = struct {
}
return old_mem[0..new_size];
},
- Os.windows => {
- if (new_size == 0) {
- const self = @fieldParentPtr(DirectAllocator, "allocator", allocator);
- _ = os.windows.HeapFree(self.heap_handle.?, 0, old_mem.ptr);
- return old_mem[0..new_size];
- }
-
- return realloc(allocator, old_mem, old_align, new_size, new_align) catch {
- const old_adjusted_addr = @ptrToInt(old_mem.ptr);
- const old_record_addr = old_adjusted_addr + old_mem.len;
- const root_addr = @intToPtr(*align(1) usize, old_record_addr).*;
- const old_ptr = @intToPtr(*c_void, root_addr);
- const new_record_addr = old_record_addr - new_size + old_mem.len;
- @intToPtr(*align(1) usize, new_record_addr).* = root_addr;
- return old_mem[0..new_size];
- };
+ Os.windows => return realloc(allocator, old_mem, old_align, new_size, new_align) catch {
+ const old_adjusted_addr = @ptrToInt(old_mem.ptr);
+ const old_record_addr = old_adjusted_addr + old_mem.len;
+ const root_addr = @intToPtr(*align(1) usize, old_record_addr).*;
+ const old_ptr = @intToPtr(*c_void, root_addr);
+ const new_record_addr = old_record_addr - new_size + old_mem.len;
+ @intToPtr(*align(1) usize, new_record_addr).* = root_addr;
+ return old_mem[0..new_size];
},
else => @compileError("Unsupported OS"),
}
@@ -151,7 +143,6 @@ pub const DirectAllocator = struct {
return result;
},
Os.windows => {
- assert(new_size > 0);
if (old_mem.len == 0) return alloc(allocator, new_size, new_align);
const self = @fieldParentPtr(DirectAllocator, "allocator", allocator);