From d1e6ff1490c5e7021670b906f678caf1865bd1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 14 Nov 2012 02:16:30 +0100 Subject: [PATCH] ResourceManager: assertions on global instance pointer. Better be sure than crash somewhere deep in STL code. --- src/ResourceManager.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ResourceManager.h b/src/ResourceManager.h index a8ad00d9b..b00732199 100644 --- a/src/ResourceManager.h +++ b/src/ResourceManager.h @@ -452,7 +452,10 @@ cube->draw(); template class ResourceManager: protected Implementation::ResourceManagerData... { public: /** @brief Global instance */ - inline static ResourceManager* instance() { return _instance; } + inline static ResourceManager* instance() { + CORRADE_ASSERT(_instance, "ResourceManager::instance(): no instance exists", nullptr); + return _instance; + } /** * @brief Constructor @@ -463,7 +466,7 @@ template class ResourceManager: protected Implementation::Resour * @see instance() */ inline ResourceManager() { - CORRADE_ASSERT(!_instance, "ResourceManager: another instance is already created!", ); + CORRADE_ASSERT(!_instance, "ResourceManager::ResourceManager(): another instance is already created", ); _instance = this; } @@ -473,7 +476,10 @@ template class ResourceManager: protected Implementation::Resour * Sets global instance pointer to `nullptr`. * @see instance() */ - inline ~ResourceManager() { _instance = nullptr; } + inline ~ResourceManager() { + CORRADE_INTERNAL_ASSERT(_instance == this); + _instance = nullptr; + } /** @brief Count of resources of given type */ template inline std::size_t count() {