Isolate JKRHeap operator overloads

Fixes #25

This isolates the JKRHeap operator new/delete overloads. Every single new/delete site in the code has been replaced with a macro.

Sadly for new[] and delete[] we have to keep global operators. The global new[] just allocates into malloc() however, and delete[] goes into free() if it's not in a JKRHeap. So that's fine.
This commit is contained in:
PJB3005
2026-02-27 23:11:59 +01:00
parent 2204ad0813
commit 038ef4216f
634 changed files with 3451 additions and 3350 deletions
+27 -27
View File
@@ -347,22 +347,22 @@ int dMsgObject_c::_create(msg_class* param_1) {
changeGroup(0);
mpOutFont = NULL;
mpScrnDraw = NULL;
mpResCont = new JMessage::TResourceContainer();
mpResCont = JKR_NEW JMessage::TResourceContainer();
JUT_ASSERT(1299, mpResCont != NULL);
mpCtrl = dDemo_c::getMesgControl();
JUT_ASSERT(1302, mpCtrl != NULL);
mpRefer = new jmessage_tReference();
mpRefer = JKR_NEW jmessage_tReference();
JUT_ASSERT(1305, mpRefer != NULL);
mpRefer->setpStatus(&param_1->mode);
mpSeqProc = new jmessage_tSequenceProcessor(mpRefer, mpCtrl);
mpSeqProc = JKR_NEW jmessage_tSequenceProcessor(mpRefer, mpCtrl);
JUT_ASSERT(1310, mpSeqProc != NULL);
mpRenProc = new jmessage_tRenderingProcessor(mpRefer);
mpRenProc = JKR_NEW jmessage_tRenderingProcessor(mpRefer);
JUT_ASSERT(1313, mpRenProc != NULL);
mpRefer->setResourceContainer(mpResCont);
mpCtrl->setSequenceProcessor(mpSeqProc);
mpCtrl->setRenderingProcessor(mpRenProc);
mpRefer->setObjectPtr(this);
field_0x124 = new JMessage::TParse(mpResCont);
field_0x124 = JKR_NEW JMessage::TParse(mpResCont);
field_0x124->parse(mpMsgDt, 0);
mpCtrl->reset();
mpCtrl->resetResourceCache();
@@ -395,7 +395,7 @@ int dMsgObject_c::_create(msg_class* param_1) {
field_0x15c = 0;
field_0x172 = 0;
setStatusLocal(1);
mpMsgString = new dMsgString_c();
mpMsgString = JKR_NEW dMsgString_c();
JUT_ASSERT(1366, mpMsgString != NULL);
return 4;
}
@@ -550,27 +550,27 @@ int dMsgObject_c::_draw() {
int dMsgObject_c::_delete() {
mpResCont->destroyResource_all();
if (mpScrnDraw != NULL) {
delete mpScrnDraw;
JKR_DELETE(mpScrnDraw);
mpScrnDraw = 0;
}
mpMsgDt = 0;
mpMsgRes = 0;
field_0x12c = 0;
if (mpOutFont != NULL) {
delete mpOutFont;
JKR_DELETE(mpOutFont);
mpOutFont = NULL;
}
delete mpResCont;
JKR_DELETE(mpResCont);
mpResCont = NULL;
delete mpRefer;
JKR_DELETE(mpRefer);
mpRefer = NULL;
delete mpSeqProc;
JKR_DELETE(mpSeqProc);
mpSeqProc = NULL;
delete mpRenProc;
JKR_DELETE(mpRenProc);
mpRenProc = NULL;
delete field_0x124;
JKR_DELETE(field_0x124);
field_0x124 = NULL;
delete mpMsgString;
JKR_DELETE(mpMsgString);
mpMsgString = NULL;
if (mpTalkHeap != NULL) {
mpTalkHeap = NULL;
@@ -1335,7 +1335,7 @@ void dMsgObject_c::talkStartInit() {
bool local_98 = false;
if (mpOutFont == NULL) {
OS_REPORT("free size (0x%x)=====> %d\n", mDoExt_getCurrentHeap(), mDoExt_getCurrentHeap()->getTotalFreeSize());
mpOutFont = new COutFont_c(0);
mpOutFont = JKR_NEW COutFont_c(0);
JUT_ASSERT(3035, mpOutFont != NULL);
mpOutFont->createPane();
mpRenProc->setOutFont(mpOutFont);
@@ -1345,7 +1345,7 @@ void dMsgObject_c::talkStartInit() {
switch (mFukiKind) {
case 9:
pRef = (jmessage_tReference*)mpRenProc->getReference();
pData = new dMsgScrnItem_c(pRef->getFukiPosType(), pRef->getForm(), mpTalkHeap);
pData = JKR_NEW dMsgScrnItem_c(pRef->getFukiPosType(), pRef->getForm(), mpTalkHeap);
JUT_ASSERT(3049, pData != NULL);
mpScrnDraw = pData;
break;
@@ -1353,32 +1353,32 @@ void dMsgObject_c::talkStartInit() {
if (mFukiKind == 15) {
local_30 = mDoExt_getRubyFont();
}
pData = new dMsgScrnTree_c(local_30, mpTalkHeap);
pData = JKR_NEW dMsgScrnTree_c(local_30, mpTalkHeap);
JUT_ASSERT(3061, pData != NULL);
mpScrnDraw = pData;
break;
case 6:
pData = new dMsgScrnKanban_c(mpTalkHeap);
pData = JKR_NEW dMsgScrnKanban_c(mpTalkHeap);
JUT_ASSERT(3069, pData != NULL);
mpScrnDraw = pData;
break;
case 7:
pData = new dMsgScrnStaff_c(((jmessage_tReference*)mpRenProc->getReference())->getArrange());
pData = JKR_NEW dMsgScrnStaff_c(((jmessage_tReference*)mpRenProc->getReference())->getArrange());
JUT_ASSERT(3083, pData != NULL);
mpScrnDraw = pData;
break;
case 12:
pData = new dMsgScrnPlace_c();
pData = JKR_NEW dMsgScrnPlace_c();
JUT_ASSERT(3092, pData != NULL);
mpScrnDraw = pData;
break;
case 19:
pData = new dMsgScrnBoss_c();
pData = JKR_NEW dMsgScrnBoss_c();
JUT_ASSERT(3100, pData != NULL);
mpScrnDraw = pData;
break;
case 17:
pData = new dMsgScrnHowl_c();
pData = JKR_NEW dMsgScrnHowl_c();
JUT_ASSERT(3108, pData != NULL);
mpScrnDraw = pData;
local_98 = true;
@@ -1386,7 +1386,7 @@ void dMsgObject_c::talkStartInit() {
case 1:
case 5:
pRef = (jmessage_tReference*)mpRenProc->getReference();
pData = new dMsgScrnJimaku_c(pRef->getForm(), mpTalkHeap);
pData = JKR_NEW dMsgScrnJimaku_c(pRef->getForm(), mpTalkHeap);
JUT_ASSERT(3119, pData != NULL);
mpScrnDraw = pData;
break;
@@ -1395,11 +1395,11 @@ void dMsgObject_c::talkStartInit() {
default:
pRef = (jmessage_tReference*)mpRenProc->getReference();
if (mpRefer->getMsgID() == 0x2a5) {
pData = new dMsgScrnItem_c(0, pRef->getForm(), mpTalkHeap);
pData = JKR_NEW dMsgScrnItem_c(0, pRef->getForm(), mpTalkHeap);
JUT_ASSERT(3131, pData != NULL);
mpScrnDraw = pData;
} else {
pData = new dMsgScrnTalk_c(pRef->getFukiPosType(), pRef->getForm(), mpTalkHeap);
pData = JKR_NEW dMsgScrnTalk_c(pRef->getFukiPosType(), pRef->getForm(), mpTalkHeap);
JUT_ASSERT(3138, pData != NULL);
mpScrnDraw = pData;
local_98 = true;
@@ -1508,11 +1508,11 @@ u16 dMsgObject_c::getStatusLocal() {
void dMsgObject_c::delete_screen(bool param_1) {
if (mpOutFont != NULL) {
delete mpOutFont;
JKR_DELETE(mpOutFont);
mpOutFont = NULL;
}
if (mpScrnDraw != NULL) {
delete mpScrnDraw;
JKR_DELETE(mpScrnDraw);
mpScrnDraw = NULL;
if (param_1 && dComIfGp_isHeapLockFlag() == 5)
{