diff options
Diffstat (limited to 'source/slang/slang-ast-builder.h')
| -rw-r--r-- | source/slang/slang-ast-builder.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source/slang/slang-ast-builder.h b/source/slang/slang-ast-builder.h index 3023e274d..91fe63c88 100644 --- a/source/slang/slang-ast-builder.h +++ b/source/slang/slang-ast-builder.h @@ -155,9 +155,20 @@ public: /// Create AST types template <typename T> - T* create() { return _initAndAdd(new (m_arena.allocate(sizeof(T))) T); } + T* create() + { + auto alloced = m_arena.allocate(sizeof(T)); + memset(alloced, 0, sizeof(T)); + return _initAndAdd(new (alloced) T); + } + template<typename T, typename... TArgs> - T* create(TArgs... args) { return _initAndAdd(new (m_arena.allocate(sizeof(T))) T(args...)); } + T* create(TArgs... args) + { + auto alloced = m_arena.allocate(sizeof(T)); + memset(alloced, 0, sizeof(T)); + return _initAndAdd(new (alloced) T(args...)); + } template<typename T, typename ... TArgs> SLANG_FORCE_INLINE T* getOrCreate(TArgs ... args) |
