MCPcopy Create free account
hub / github.com/doldecomp/mkdd / check

Method check

libs/JSystem/JKernel/JKRExpHeap.cpp:783–858  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

781}
782
783bool JKRExpHeap::check()
784{
785 lock();
786 int totalBytes = 0;
787 bool ok = true;
788 for (CMemBlock *block = mHeadUsedList; block; block = block->mNext)
789 {
790 if (!block->isValid())
791 {
792 ok = false;
793 JUTWarningConsole_f(":::addr %08x: bad heap signature. (%c%c)\n", block, JSUHiByte(block->mUsageHeader),
794 JSULoByte(block->mUsageHeader));
795 }
796 if (block->mNext)
797 {
798 if (!block->mNext->isValid())
799 {
800 ok = false;
801 JUTWarningConsole_f(":::addr %08x: bad next pointer (%08x)\nabort\n", block, block->mNext);
802 break;
803 }
804 if (block->mNext->mPrev != block)
805 {
806 ok = false;
807 JUTWarningConsole_f(":::addr %08x: bad previous pointer (%08x)\n", block->mNext, block->mNext->mPrev);
808 }
809 }
810 else
811 {
812 if (mTailUsedList != block)
813 {
814 ok = false;
815 JUTWarningConsole_f(":::addr %08x: bad used list(REV) (%08x)\n", block, mTailUsedList);
816 }
817 }
818 totalBytes += sizeof(CMemBlock) + block->mAllocatedSpace + block->getAlignment();
819 }
820 for (CMemBlock *block = mHead; block; block = block->mNext)
821 {
822 totalBytes += block->mAllocatedSpace + sizeof(CMemBlock);
823 if (block->mNext)
824 {
825 if (block->mNext->mPrev != block)
826 {
827 ok = false;
828 JUTWarningConsole_f(":::addr %08x: bad previous pointer (%08x)\n", block->mNext, block->mNext->mPrev);
829 }
830 if ((u32)block + block->mAllocatedSpace + sizeof(CMemBlock) > (u32)block->mNext)
831 {
832 ok = false;
833 JUTWarningConsole_f(":::addr %08x: bad block size (%08x)\n", block, block->mAllocatedSpace);
834 }
835 }
836 else
837 {
838 if (mTail != block)
839 {
840 ok = false;

Callers

nothing calls this directly

Calls 8

lockFunction · 0.85
JUTWarningConsole_fFunction · 0.85
JSUHiByteFunction · 0.85
JSULoByteFunction · 0.85
JUTWarningConsoleFunction · 0.85
unlockFunction · 0.85
getAlignmentMethod · 0.80
isValidMethod · 0.45

Tested by

no test coverage detected