diff --git a/Include/auROXTL/AU_MACROS.hpp b/Include/auROXTL/AU_MACROS.hpp index 6c65bb2..5e1409c 100644 --- a/Include/auROXTL/AU_MACROS.hpp +++ b/Include/auROXTL/AU_MACROS.hpp @@ -60,22 +60,25 @@ { \ void operator()(type *t) \ { \ + if (!t) return; \ name ## Release(t); \ } \ }; \ \ using name ## Unique_t = AURORA_RUNTIME_AU_UNIQUE_PTR; \ - template \ + template \ name ## Unique_t name ## Unique(T... args) \ { \ return name ## Unique_t(name ## New(args...)); \ } \ \ - using name ## Shared_t = AuSPtr; \ - template \ + using name ## Shared_t = AuSPtr; \ + template \ name ## Shared_t name ## Shared(T... args) \ { \ - return name ## Shared_t(name ## New(args...), name ## Release); \ + auto ptr = name ## New(args...); \ + if (!ptr) return {}; \ + return name ## Shared_t(ptr, name ## Release); \ } #endif