mirror of
https://github.com/wiiu-env/FunctionPatcherModule.git
synced 2024-11-17 15:29:23 +01:00
memset the memory to 0 before freeing
This commit is contained in:
parent
54d0f80426
commit
fa3292fa28
@ -28,10 +28,11 @@ public:
|
||||
typedef void (*Callback)(CThread *thread, void *arg);
|
||||
|
||||
//! constructor
|
||||
explicit CThread(int32_t iAttr, int32_t iPriority = 16, int32_t iStackSize = 0x8000, CThread::Callback callback = nullptr, void *callbackArg = nullptr)
|
||||
explicit CThread(int32_t iAttr, int32_t iPriority = 16, int32_t stacksize = 0x8000, CThread::Callback callback = nullptr, void *callbackArg = nullptr)
|
||||
: pThread(nullptr), pThreadStack(nullptr), pCallback(callback), pCallbackArg(callbackArg) {
|
||||
//! save attribute assignment
|
||||
iAttributes = iAttr;
|
||||
iStackSize = stacksize;
|
||||
//! allocate the thread on the default Cafe OS heap
|
||||
pThread = (OSThread *) gMEMAllocFromDefaultHeapExForThreads(sizeof(OSThread), 0x10);
|
||||
//! allocate the stack on the default Cafe OS heap
|
||||
@ -123,11 +124,15 @@ public:
|
||||
}
|
||||
OSJoinThread(pThread, nullptr);
|
||||
}
|
||||
// Some games (e.g. Minecraft) expect the default heap to be empty.
|
||||
// Make sure to clean up the memory after using it
|
||||
//! free the thread stack buffer
|
||||
if (pThreadStack) {
|
||||
memset(pThreadStack, 0, iStackSize);
|
||||
gMEMFreeToDefaultHeapForThreads(pThreadStack);
|
||||
}
|
||||
if (pThread) {
|
||||
memset(pThread, 0, sizeof(OSThread));
|
||||
gMEMFreeToDefaultHeapForThreads(pThread);
|
||||
}
|
||||
pThread = nullptr;
|
||||
@ -151,6 +156,7 @@ private:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t iStackSize;
|
||||
int32_t iAttributes;
|
||||
OSThread *pThread;
|
||||
uint8_t *pThreadStack;
|
||||
|
Loading…
Reference in New Issue
Block a user