diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-04-16 19:11:37 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-04-16 19:11:37 -0400 |
| commit | 4c03746926562e4e9650eec7c4361836fabba5af (patch) | |
| tree | dd8c226fd18fc0b619803a4c90e10b30fc871b32 /std | |
| parent | b29241fc08a329c5d9b0f1b8abb0ac815c480296 (diff) | |
| download | zig-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.zig | 25 |
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); |
