diff --git a/VirtualFileSystem/FileSystem.cpp b/VirtualFileSystem/FileSystem.cpp index 6b13854ece..e8b774e767 100644 --- a/VirtualFileSystem/FileSystem.cpp +++ b/VirtualFileSystem/FileSystem.cpp @@ -2,16 +2,22 @@ #include #include "FileSystem.h" -static dword s_lastFileSystemID = 0; +static dword s_lastFileSystemID; +static HashMap* map; static HashMap& fileSystems() { - static HashMap* map; if (!map) map = new HashMap(); return *map; } +void FileSystem::initializeGlobals() +{ + s_lastFileSystemID = 0; + map = 0; +} + FileSystem::FileSystem() : m_id(++s_lastFileSystemID) { diff --git a/VirtualFileSystem/FileSystem.h b/VirtualFileSystem/FileSystem.h index 80c3021426..a32e8c4077 100644 --- a/VirtualFileSystem/FileSystem.h +++ b/VirtualFileSystem/FileSystem.h @@ -18,6 +18,7 @@ static const dword mepoch = 476763780; class FileSystem : public Retainable { public: + static void initializeGlobals(); virtual ~FileSystem(); dword id() const { return m_id; } diff --git a/VirtualFileSystem/VirtualFileSystem.cpp b/VirtualFileSystem/VirtualFileSystem.cpp index 15104a2f9d..f0f712a6a5 100644 --- a/VirtualFileSystem/VirtualFileSystem.cpp +++ b/VirtualFileSystem/VirtualFileSystem.cpp @@ -7,6 +7,11 @@ //#define VFS_DEBUG +void VirtualFileSystem::initializeGlobals() +{ + FileSystem::initializeGlobals(); +} + static dword encodedDevice(unsigned major, unsigned minor) { return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); diff --git a/VirtualFileSystem/VirtualFileSystem.h b/VirtualFileSystem/VirtualFileSystem.h index 5c59a372cc..c16efa130f 100644 --- a/VirtualFileSystem/VirtualFileSystem.h +++ b/VirtualFileSystem/VirtualFileSystem.h @@ -14,6 +14,8 @@ class FileSystem; class VirtualFileSystem { public: + static void initializeGlobals(); + struct Node { InodeIdentifier inode;