authorgravatar for tgschultz@gmail.comtgschultz <tgschultz@gmail.com> 2019-04-20 17:24:40+00:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-20 14:04:09-04:00
log22f5e5fd3e7f4cf15c38c2b3be0b0e357854026a
tree2785d14b835c8a6439178c9306a42e56a0fd63e5
parentb864fe7e23e5c222e82cc6ccb840eb5e8e1bf15b

Fixes DirectAllocator Windows implementation to call HeapFree when new_size == 0


1 files changed, 7 insertions(+), 0 deletions(-)

std/heap.zig+7
...@@ -151,6 +151,13 @@ pub const DirectAllocator = struct {...@@ -151,6 +151,13 @@ pub const DirectAllocator = struct {
151 const old_record_addr = old_adjusted_addr + old_mem.len;151 const old_record_addr = old_adjusted_addr + old_mem.len;
152 const root_addr = @intToPtr(*align(1) usize, old_record_addr).*;152 const root_addr = @intToPtr(*align(1) usize, old_record_addr).*;
153 const old_ptr = @intToPtr(*c_void, root_addr);153 const old_ptr = @intToPtr(*c_void, root_addr);
154
155 if(new_size == 0)
156 {
157 if(os.windows.HeapFree(self.heap_handle.?, 0, old_ptr) == 0) unreachable;
158 return old_mem[0..0];
159 }
160
154 const amt = new_size + new_align + @sizeOf(usize);161 const amt = new_size + new_align + @sizeOf(usize);
155 const new_ptr = os.windows.HeapReAlloc(162 const new_ptr = os.windows.HeapReAlloc(
156 self.heap_handle.?,163 self.heap_handle.?,