From 64540bc60d86c9cf48b26fd8b181e1b0a5a6400f Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sun, 2 Nov 2014 17:32:22 -0800 Subject: [PATCH] MemArena: Fix a memory leak caused by pointer confusion This code was ported from out_ptr, which was a double-pointer, and wanted to double-check that the proper arena was actually allocated. When I ported it to store the pointer directly in the view regardless of whether out_ptr was non-NULL, I got confused here and instead caused the code to only free the arena if the first byte was non-zero. --- Source/Core/Common/MemArena.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/Common/MemArena.cpp b/Source/Core/Common/MemArena.cpp index 60ad058778..119549f06d 100644 --- a/Source/Core/Common/MemArena.cpp +++ b/Source/Core/Common/MemArena.cpp @@ -267,7 +267,7 @@ void MemoryMap_Shutdown(MemoryView *views, int num_views, u32 flags, MemArena *a for (int i = 0; i < num_views; i++) { MemoryView* view = &views[i]; - if (view->mapped_ptr && *(u8*)view->mapped_ptr && !freeset.count(view->mapped_ptr)) + if (view->mapped_ptr && !freeset.count(view->mapped_ptr)) { arena->ReleaseView(view->mapped_ptr, view->size); freeset.insert(view->mapped_ptr);