diff --git a/storm/Big.cpp b/storm/Big.cpp index 1741df5..d17b023 100644 --- a/storm/Big.cpp +++ b/storm/Big.cpp @@ -99,8 +99,7 @@ void SBigMul(BigData* a, BigData* b, BigData* c) { } void SBigNew(BigData** num) { - auto m = SMemAlloc(sizeof(BigData), __FILE__, __LINE__, 0x0); - *num = new (m) BigData(); + *num = STORM_NEW(BigData); } void SBigNot(BigData* a, BigData* b) { diff --git a/storm/Memory.hpp b/storm/Memory.hpp index 355fca0..18e8c2e 100644 --- a/storm/Memory.hpp +++ b/storm/Memory.hpp @@ -6,6 +6,18 @@ #define SMEM_FLAG_ZEROMEMORY 0x8 +#define STORM_ALLOC(bytes) \ + SMemAlloc(bytes, __FILE__, __LINE__, 0x0) + +#define STORM_ALLOC_ZERO(bytes) \ + SMemAlloc(bytes, __FILE__, __LINE__, SMEM_FLAG_ZEROMEMORY) + +#define STORM_NEW(t) \ + new(SMemAlloc(sizeof(t), __FILE__, __LINE__, 0x0)) t + +#define STORM_NEW_ZERO(t) \ + new(SMemAlloc(sizeof(t), __FILE__, __LINE__, SMEM_FLAG_ZEROMEMORY)) t + void* SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t flags = 0); void SMemCopy(void* dst, void* src, size_t bytes); diff --git a/storm/thread/linux/Thread.cpp b/storm/thread/linux/Thread.cpp index f25ae2d..5f377da 100644 --- a/storm/thread/linux/Thread.cpp +++ b/storm/thread/linux/Thread.cpp @@ -40,8 +40,7 @@ void* SCreateThread(uint32_t (*threadProc)(void*), void* threadParam, void* a3, uint32_t threadId = S_Thread::s_threadID++; - void* m = SMemAlloc(sizeof(SThreadParmBlock), __FILE__, __LINE__, 0x8); - auto params = new (m) SThreadParmBlock(); + auto params = STORM_NEW_ZERO(SThreadParmBlock); params->threadProc = threadProc; params->threadParam = threadParam; params->threadID = threadId; diff --git a/storm/thread/mac/Thread.mm b/storm/thread/mac/Thread.mm index 24732bb..574d220 100644 --- a/storm/thread/mac/Thread.mm +++ b/storm/thread/mac/Thread.mm @@ -40,8 +40,7 @@ void* SCreateThread(uint32_t (*threadProc)(void*), void* threadParam, void* a3, uint32_t threadId = S_Thread::s_threadID++; - void* m = SMemAlloc(sizeof(SThreadParmBlock), __FILE__, __LINE__, 0x8); - auto params = new (m) SThreadParmBlock(); + auto params = STORM_NEW_ZERO(SThreadParmBlock); params->threadProc = threadProc; params->threadParam = threadParam; params->threadID = threadId; diff --git a/storm/thread/win/Thread.cpp b/storm/thread/win/Thread.cpp index 7b6e1da..501c6e6 100644 --- a/storm/thread/win/Thread.cpp +++ b/storm/thread/win/Thread.cpp @@ -38,8 +38,7 @@ void* SCreateThread(uint32_t (*threadProc)(void*), void* threadParam, void* a3, */ } - void* m = SMemAlloc(sizeof(SThreadParmBlock), __FILE__, __LINE__, 0x8); - auto params = new (m) SThreadParmBlock(); + auto params = STORM_NEW(SThreadParmBlock); params->threadProc = threadProc; params->threadParam = threadParam;