diff --git a/components/vfs/bsaarchive.cpp b/components/vfs/bsaarchive.cpp index b550823861..c775ca6e44 100644 --- a/components/vfs/bsaarchive.cpp +++ b/components/vfs/bsaarchive.cpp @@ -7,15 +7,13 @@ namespace VFS BsaArchive::BsaArchive(const std::string &filename) { - mFile = nullptr; - Bsa::BsaVersion bsaVersion = Bsa::TES4BSAFile::detectVersion(filename); if (bsaVersion == Bsa::BSAVER_TES4PLUS) { - mFile = new Bsa::TES4BSAFile(); + mFile = std::make_unique(); } else { - mFile = new Bsa::BSAFile(); + mFile = std::make_unique(); } mFile->open(filename); @@ -23,12 +21,11 @@ BsaArchive::BsaArchive(const std::string &filename) const Bsa::BSAFile::FileList &filelist = mFile->getList(); for(Bsa::BSAFile::FileList::const_iterator it = filelist.begin();it != filelist.end();++it) { - mResources.push_back(BsaArchiveFile(&*it, mFile)); + mResources.push_back(BsaArchiveFile(&*it, mFile.get())); } } BsaArchive::~BsaArchive() { - delete mFile; } void BsaArchive::listResources(std::map &out, char (*normalize_function)(char)) diff --git a/components/vfs/bsaarchive.hpp b/components/vfs/bsaarchive.hpp index 0af9650132..a87f278c76 100644 --- a/components/vfs/bsaarchive.hpp +++ b/components/vfs/bsaarchive.hpp @@ -26,7 +26,7 @@ namespace VFS virtual void listResources(std::map& out, char (*normalize_function) (char)); private: - Bsa::BSAFile* mFile; + std::unique_ptr mFile; std::vector mResources; }; }