From 19b2e739c5b7c26d8d92763204a4f626e6ea8c52 Mon Sep 17 00:00:00 2001
From: Yuri Kunde Schlesner <yuriks@yuriks.net>
Date: Sat, 3 Jan 2015 17:15:53 -0200
Subject: [PATCH] FileSys: Fix a few memory leaks

---
 src/core/file_sys/disk_archive.cpp | 11 ++++++-----
 src/core/file_sys/disk_archive.h   |  2 +-
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/core/file_sys/disk_archive.cpp b/src/core/file_sys/disk_archive.cpp
index 0197f727d..c6e033fcd 100644
--- a/src/core/file_sys/disk_archive.cpp
+++ b/src/core/file_sys/disk_archive.cpp
@@ -6,6 +6,7 @@
 
 #include "common/common_types.h"
 #include "common/file_util.h"
+#include "common/make_unique.h"
 
 #include "core/file_sys/disk_archive.h"
 #include "core/settings.h"
@@ -17,10 +18,10 @@ namespace FileSys {
 
 std::unique_ptr<FileBackend> DiskArchive::OpenFile(const Path& path, const Mode mode) const {
     LOG_DEBUG(Service_FS, "called path=%s mode=%01X", path.DebugStr().c_str(), mode.hex);
-    DiskFile* file = new DiskFile(this, path, mode);
+    auto file = Common::make_unique<DiskFile>(this, path, mode);
     if (!file->Open())
         return nullptr;
-    return std::unique_ptr<FileBackend>(file);
+    return std::move(file);
 }
 
 bool DiskArchive::DeleteFile(const Path& path) const {
@@ -66,10 +67,10 @@ bool DiskArchive::RenameDirectory(const Path& src_path, const Path& dest_path) c
 
 std::unique_ptr<DirectoryBackend> DiskArchive::OpenDirectory(const Path& path) const {
     LOG_DEBUG(Service_FS, "called path=%s", path.DebugStr().c_str());
-    DiskDirectory* directory = new DiskDirectory(this, path);
+    auto directory = Common::make_unique<DiskDirectory>(this, path);
     if (!directory->Open())
         return nullptr;
-    return std::unique_ptr<DirectoryBackend>(directory);
+    return std::move(directory);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -100,7 +101,7 @@ bool DiskFile::Open() {
     // Open the file in binary mode, to avoid problems with CR/LF on Windows systems
     mode_string += "b";
 
-    file = new FileUtil::IOFile(path, mode_string.c_str());
+    file = Common::make_unique<FileUtil::IOFile>(path, mode_string.c_str());
     return true;
 }
 
diff --git a/src/core/file_sys/disk_archive.h b/src/core/file_sys/disk_archive.h
index f18d96f5a..4663a9591 100644
--- a/src/core/file_sys/disk_archive.h
+++ b/src/core/file_sys/disk_archive.h
@@ -75,7 +75,7 @@ protected:
     const DiskArchive* archive;
     std::string path;
     Mode mode;
-    FileUtil::IOFile* file;
+    std::unique_ptr<FileUtil::IOFile> file;
 };
 
 class DiskDirectory : public DirectoryBackend {