diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-11-02 17:32:22 -0800 |
|---|---|---|
| committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-11-02 19:25:42 -0800 |
| commit | 64540bc60d86c9cf48b26fd8b181e1b0a5a6400f (patch) | |
| tree | 1b847cddcdffb398b1e6a93406564e3a79141fbd /Source/Core/Common/MemArena.cpp | |
| parent | 204598a0826b3692b8d2dc0c68045b8d95f3b6ef (diff) | |
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.
Diffstat (limited to 'Source/Core/Common/MemArena.cpp')
| -rw-r--r-- | Source/Core/Common/MemArena.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
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); |
