diff --git a/src/ruc/singleton.h b/src/ruc/singleton.h index c753dc0..922880c 100644 --- a/src/ruc/singleton.h +++ b/src/ruc/singleton.h @@ -29,7 +29,9 @@ public: static inline void destroy() { - VERIFY(s_instance, "singleton does not exist"); + if (!s_instance) { + return; + } delete s_instance; s_instance = nullptr; @@ -44,6 +46,13 @@ public: protected: Singleton() {} + // Hack: in certain situations the instance needs to be set early + static void set(T* instance) + { + VERIFY(!s_instance, "singleton already exists"); + s_instance = instance; + } + // Constructor token struct s {};