Update the malloc/free pointers used for threads to fix apps which use a custom heap

This commit is contained in:
Maschell
2022-07-26 23:11:47 +02:00
parent 4569e407ae
commit d602d17034
4 changed files with 22 additions and 11 deletions

View File

@@ -33,9 +33,9 @@ public:
//! save attribute assignment
iAttributes = iAttr;
//! allocate the thread on the default Cafe OS heap
pThread = (OSThread *) gRealMEMAllocFromDefaultHeapEx(sizeof(OSThread), 0x10);
pThread = (OSThread *) gMEMAllocFromDefaultHeapExForThreads(sizeof(OSThread), 0x10);
//! allocate the stack on the default Cafe OS heap
pThreadStack = (uint8_t *) gRealMEMAllocFromDefaultHeapEx(iStackSize, 0x20);
pThreadStack = (uint8_t *) gMEMAllocFromDefaultHeapExForThreads(iStackSize, 0x20);
//! create the thread
if (pThread && pThreadStack) {
// clang-format off
@@ -125,10 +125,10 @@ public:
}
//! free the thread stack buffer
if (pThreadStack) {
gMEMFreeToDefaultHeap(pThreadStack);
gMEMFreeToDefaultHeapForThreads(pThreadStack);
}
if (pThread) {
gMEMFreeToDefaultHeap(pThread);
gMEMFreeToDefaultHeapForThreads(pThread);
}
pThread = nullptr;
pThreadStack = nullptr;

View File

@@ -7,5 +7,5 @@ std::shared_ptr<FunctionAddressProvider> gFunctionAddressProvider;
std::mutex gPatchedFunctionsMutex;
std::vector<std::shared_ptr<PatchedFunctionData>> gPatchedFunctions;
void *(*gRealMEMAllocFromDefaultHeapEx)(uint32_t size, int align);
void (*gMEMFreeToDefaultHeap)(void *ptr);
void *(*gMEMAllocFromDefaultHeapExForThreads)(uint32_t size, int align);
void (*gMEMFreeToDefaultHeapForThreads)(void *ptr);

View File

@@ -12,5 +12,5 @@ extern std::shared_ptr<FunctionAddressProvider> gFunctionAddressProvider;
extern std::mutex gPatchedFunctionsMutex;
extern std::vector<std::shared_ptr<PatchedFunctionData>> gPatchedFunctions;
extern void *(*gRealMEMAllocFromDefaultHeapEx)(uint32_t size, int align);
extern void (*gMEMFreeToDefaultHeap)(void *ptr);
extern void *(*gMEMAllocFromDefaultHeapExForThreads)(uint32_t size, int align);
extern void (*gMEMFreeToDefaultHeapForThreads)(void *ptr);