authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-16 19:11:37-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-16 19:11:37-04:00
log4c03746926562e4e9650eec7c4361836fabba5af
treedd8c226fd18fc0b619803a4c90e10b30fc871b32
parentb29241fc08a329c5d9b0f1b8abb0ac815c480296
signaturelock-open Commit is signed but in an unrecognized format.

Revert "DirectAllocator: on windows, use HeapFree instead of HeapReAlloc to free memory."

This reverts commit 71bb8cd5370f52b5fef3b107069d4879b434e108. This broke the CI on Windows.

1 files changed, 8 insertions(+), 17 deletions(-)

std/heap.zig+8-17
......@@ -118,22 +118,14 @@ pub const DirectAllocator = struct {
118118 }
119119 return old_mem[0..new_size];
120120 },
121 Os.windows => {
122 if (new_size == 0) {
123 const self = @fieldParentPtr(DirectAllocator, "allocator", allocator);
124 _ = os.windows.HeapFree(self.heap_handle.?, 0, old_mem.ptr);
125 return old_mem[0..new_size];
126 }
127
128 return realloc(allocator, old_mem, old_align, new_size, new_align) catch {
129 const old_adjusted_addr = @ptrToInt(old_mem.ptr);
130 const old_record_addr = old_adjusted_addr + old_mem.len;
131 const root_addr = @intToPtr(*align(1) usize, old_record_addr).*;
132 const old_ptr = @intToPtr(*c_void, root_addr);
133 const new_record_addr = old_record_addr - new_size + old_mem.len;
134 @intToPtr(*align(1) usize, new_record_addr).* = root_addr;
135 return old_mem[0..new_size];
136 };
121 Os.windows => return realloc(allocator, old_mem, old_align, new_size, new_align) catch {
122 const old_adjusted_addr = @ptrToInt(old_mem.ptr);
123 const old_record_addr = old_adjusted_addr + old_mem.len;
124 const root_addr = @intToPtr(*align(1) usize, old_record_addr).*;
125 const old_ptr = @intToPtr(*c_void, root_addr);
126 const new_record_addr = old_record_addr - new_size + old_mem.len;
127 @intToPtr(*align(1) usize, new_record_addr).* = root_addr;
128 return old_mem[0..new_size];
137129 },
138130 else => @compileError("Unsupported OS"),
139131 }
......@@ -151,7 +143,6 @@ pub const DirectAllocator = struct {
151143 return result;
152144 },
153145 Os.windows => {
154 assert(new_size > 0);
155146 if (old_mem.len == 0) return alloc(allocator, new_size, new_align);
156147
157148 const self = @fieldParentPtr(DirectAllocator, "allocator", allocator);