From 11589d874f856c8c538ebb905eb2c53d82a6b779 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 30 Jun 2022 04:38:50 -0700 Subject: [PATCH] Qt: Fix leak when opening a ROM in an archive --- src/platform/qt/CoreManager.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/platform/qt/CoreManager.cpp b/src/platform/qt/CoreManager.cpp index 05fccf1c2..b5fc3e413 100644 --- a/src/platform/qt/CoreManager.cpp +++ b/src/platform/qt/CoreManager.cpp @@ -62,13 +62,16 @@ CoreController* CoreManager::loadGame(const QString& path) { VFile* vfOriginal = VDirFindFirst(archive, [](VFile* vf) { return mCoreIsCompatible(vf) != mPLATFORM_NONE; }); - ssize_t size; - if (vfOriginal && (size = vfOriginal->size(vfOriginal)) > 0) { - void* mem = vfOriginal->map(vfOriginal, size, MAP_READ); - vf = VFileMemChunk(mem, size); - vfOriginal->unmap(vfOriginal, mem, size); + if (vfOriginal) { + ssize_t size = vfOriginal->size(vfOriginal); + if (size > 0) { + void* mem = vfOriginal->map(vfOriginal, size, MAP_READ); + vf = VFileMemChunk(mem, size); + vfOriginal->unmap(vfOriginal, mem, size); + } vfOriginal->close(vfOriginal); } + archive->close(archive); } QDir dir(info.dir()); if (!vf) {