From 81890e30e2d51577e6c79b3a620115b6fbbf2071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20Courant?= Date: Mon, 7 Dec 2020 23:27:37 +0100 Subject: [PATCH] Fix general purpose allocator incorrectly modifying total_requested_bytes in some cases --- lib/std/heap/general_purpose_allocator.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/std/heap/general_purpose_allocator.zig b/lib/std/heap/general_purpose_allocator.zig index aaa2e88c51..ce1f980458 100644 --- a/lib/std/heap/general_purpose_allocator.zig +++ b/lib/std/heap/general_purpose_allocator.zig @@ -528,7 +528,11 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type { second_free_stack_trace, }); if (new_size == 0) { - // Recoverable. + // Recoverable. Restore self.total_requested_bytes if needed, as we + // don't return an error value so the errdefer above does not run. + if (config.enable_memory_limit) { + self.total_requested_bytes = prev_req_bytes; + } return @as(usize, 0); } @panic("Unrecoverable double free");