diff options
| author | Lioncash <mathew1800@gmail.com> | 2015-12-06 23:15:51 -0500 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2015-12-07 05:57:37 -0500 |
| commit | edbbf493f807ed94b9b32cfb7463f9b7f8f27852 (patch) | |
| tree | 1babef3faeba508560effc1db476cbb722a9a709 /Source/Core/DiscIO/Filesystem.cpp | |
| parent | a0ac2b867368aa6f82ee3c471fea2cf1a450b37c (diff) | |
DiscIO: Make factory methods return unique_ptrs
Rather than rely on the developer to do the right thing,
just make the default behavior safely deallocate resources.
If shared semantics are ever needed in the future, the
constructor that takes a unique_ptr for shared_ptr can
be used.
Diffstat (limited to 'Source/Core/DiscIO/Filesystem.cpp')
| -rw-r--r-- | Source/Core/DiscIO/Filesystem.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Source/Core/DiscIO/Filesystem.cpp b/Source/Core/DiscIO/Filesystem.cpp index c723569088..3ca1f70f04 100644 --- a/Source/Core/DiscIO/Filesystem.cpp +++ b/Source/Core/DiscIO/Filesystem.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include <memory> #include "DiscIO/Filesystem.h" #include "DiscIO/FileSystemGCWii.h" @@ -17,20 +18,17 @@ IFileSystem::~IFileSystem() {} -IFileSystem* CreateFileSystem(const IVolume* _rVolume) +std::unique_ptr<IFileSystem> CreateFileSystem(const IVolume* volume) { - IFileSystem* pFileSystem = new CFileSystemGCWii(_rVolume); + std::unique_ptr<IFileSystem> filesystem = std::make_unique<CFileSystemGCWii>(volume); - if (!pFileSystem) + if (!filesystem) return nullptr; - if (!pFileSystem->IsValid()) - { - delete pFileSystem; - pFileSystem = nullptr; - } + if (!filesystem->IsValid()) + filesystem.reset(); - return pFileSystem; + return filesystem; } } // namespace |
