diff options
| author | LPFaint99 <lpfaint99@gmail.com> | 2011-06-05 07:42:40 +0000 |
|---|---|---|
| committer | LPFaint99 <lpfaint99@gmail.com> | 2011-06-05 07:42:40 +0000 |
| commit | b808af1d7f2df9937a175e8cfd1a49c0bc41aebc (patch) | |
| tree | 1d300a226ba4cfe899a47144622692418a0744a1 /Source/Core/DiscIO | |
| parent | 2c4bc6d94c3b74f2f1f2e79e678a9118ef6106c5 (diff) | |
fix infinitely recursive deletion from r7587 and actually update locations of content.map and uid.sys
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7588 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DiscIO')
| -rw-r--r-- | Source/Core/DiscIO/Src/NANDContentLoader.cpp | 43 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/NANDContentLoader.h | 12 |
2 files changed, 19 insertions, 36 deletions
diff --git a/Source/Core/DiscIO/Src/NANDContentLoader.cpp b/Source/Core/DiscIO/Src/NANDContentLoader.cpp index 3419ea98f0..ff8be03f89 100644 --- a/Source/Core/DiscIO/Src/NANDContentLoader.cpp +++ b/Source/Core/DiscIO/Src/NANDContentLoader.cpp @@ -28,23 +28,18 @@ namespace DiscIO { -CSharedContent *CSharedContent::m_Instance = NULL; -cUIDsys *cUIDsys::m_Instance = NULL; +CSharedContent CSharedContent::m_Instance; +cUIDsys cUIDsys::m_Instance; -CSharedContent& CSharedContent::AccessInstance() -{ - if (!m_Instance) m_Instance = new CSharedContent; - return *m_Instance; -} -void CSharedContent::UpdateLocation() +CSharedContent::CSharedContent() { - delete m_Instance; - m_Instance = new CSharedContent; + UpdateLocation(); } -CSharedContent::CSharedContent() +void CSharedContent::UpdateLocation() { + m_Elements.clear(); lastID = 0; sprintf(contentMap, "%sshared1/content.map", File::GetUserPath(D_WIIUSER_IDX).c_str()); @@ -58,10 +53,7 @@ CSharedContent::CSharedContent() } CSharedContent::~CSharedContent() -{ - delete m_Instance; - m_Instance = NULL; -} +{} std::string CSharedContent::GetFilenameFromSHA1(u8* _pHash) { @@ -409,23 +401,17 @@ void CNANDContentLoader::RemoveTitle() const } } -cUIDsys& cUIDsys::AccessInstance() +cUIDsys::cUIDsys() { - if (!m_Instance) m_Instance = new cUIDsys; - return *m_Instance; + UpdateLocation(); } void cUIDsys::UpdateLocation() { - delete m_Instance; - m_Instance = new cUIDsys; -} - -cUIDsys::cUIDsys() -{ - sprintf(uidSys, "%ssys/uid.sys", File::GetUserPath(D_WIIUSER_IDX).c_str()); + m_Elements.clear(); lastUID = 0x00001000; - + sprintf(uidSys, "%ssys/uid.sys", File::GetUserPath(D_WIIUSER_IDX).c_str()); + File::IOFile pFile(uidSys, "rb"); SElement Element; while (pFile.ReadArray(&Element, 1)) @@ -448,10 +434,7 @@ cUIDsys::cUIDsys() } cUIDsys::~cUIDsys() -{ - delete m_Instance; - m_Instance = NULL; -} +{} u32 cUIDsys::GetUIDFromTitle(u64 _Title) { diff --git a/Source/Core/DiscIO/Src/NANDContentLoader.h b/Source/Core/DiscIO/Src/NANDContentLoader.h index 1a2f96a431..14a2062641 100644 --- a/Source/Core/DiscIO/Src/NANDContentLoader.h +++ b/Source/Core/DiscIO/Src/NANDContentLoader.h @@ -106,11 +106,11 @@ class CSharedContent { public: - static CSharedContent& AccessInstance(); - static void UpdateLocation(); + static CSharedContent& AccessInstance() { return m_Instance; } std::string GetFilenameFromSHA1(u8* _pHash); std::string AddSharedContent(u8* _pHash); + void UpdateLocation(); private: @@ -130,19 +130,19 @@ private: u32 lastID; char contentMap[1024]; std::vector<SElement> m_Elements; - static CSharedContent *m_Instance; + static CSharedContent m_Instance; }; class cUIDsys { public: - static cUIDsys& AccessInstance(); - static void UpdateLocation(); + static cUIDsys& AccessInstance() { return m_Instance; } u32 GetUIDFromTitle(u64 _Title); void AddTitle(u64 _Title); void GetTitleIDs(std::vector<u64>& _TitleIDs, bool _owned = false); + void UpdateLocation(); private: @@ -160,7 +160,7 @@ private: u32 lastUID; char uidSys[1024]; std::vector<SElement> m_Elements; - static cUIDsys *m_Instance; + static cUIDsys m_Instance; }; } |
