From 865180e63e10b5336ca062829d6b1fad8618a3c7 Mon Sep 17 00:00:00 2001 From: Eladash Date: Sat, 23 May 2020 13:42:57 +0300 Subject: [PATCH] sys_mmapper: Fix possible memory leak on error of create_lv2_shm --- rpcs3/Emu/Cell/lv2/sys_mmapper.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp b/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp index c6f7caa1a9..f25fa24387 100644 --- a/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp @@ -147,6 +147,7 @@ error_code sys_mmapper_allocate_shared_memory(ppu_thread& ppu, u64 ipc_key, u32 if (auto error = create_lv2_shm(ipc_key != SYS_MMAPPER_NO_SHM_KEY, ipc_key, size, flags & SYS_MEMORY_PAGE_SIZE_64K ? 0x10000 : 0x100000, flags, dct)) { + dct->used -= size; return error; } @@ -216,6 +217,7 @@ error_code sys_mmapper_allocate_shared_memory_from_container(ppu_thread& ppu, u6 if (auto error = create_lv2_shm(ipc_key != SYS_MMAPPER_NO_SHM_KEY, ipc_key, size, flags & SYS_MEMORY_PAGE_SIZE_64K ? 0x10000 : 0x100000, flags, ct.ptr.get())) { + ct->used -= size; return error; } @@ -319,6 +321,7 @@ error_code sys_mmapper_allocate_shared_memory_ext(ppu_thread& ppu, u64 ipc_key, if (auto error = create_lv2_shm(true, ipc_key, size, flags & SYS_MEMORY_PAGE_SIZE_64K ? 0x10000 : 0x100000, flags, dct)) { + dct->used -= size; return error; } @@ -430,6 +433,7 @@ error_code sys_mmapper_allocate_shared_memory_from_container_ext(ppu_thread& ppu if (auto error = create_lv2_shm(true, ipc_key, size, flags & SYS_MEMORY_PAGE_SIZE_64K ? 0x10000 : 0x100000, flags, ct.ptr.get())) { + ct->used -= size; return error; }