aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2009-10-09 08:15:30 +0000
committerPaul Gilbert2009-10-09 08:15:30 +0000
commit8694b48ae33fb010312be056e6b830b317e48526 (patch)
tree06a6c424ecd40f03c56caa461dfe60eaf12c1947
parent3072d54589f223572ce3d147920190bb13e57252 (diff)
downloadscummvm-rg350-8694b48ae33fb010312be056e6b830b317e48526.tar.gz
scummvm-rg350-8694b48ae33fb010312be056e6b830b317e48526.tar.bz2
scummvm-rg350-8694b48ae33fb010312be056e6b830b317e48526.zip
Set up a basic tracing system for all memory allocations to help track down memory leaks
svn-id: r44808
-rw-r--r--engines/cruise/actor.cpp4
-rw-r--r--engines/cruise/background.cpp2
-rw-r--r--engines/cruise/backgroundIncrust.cpp10
-rw-r--r--engines/cruise/cell.cpp8
-rw-r--r--engines/cruise/cruise.cpp9
-rw-r--r--engines/cruise/cruise_main.cpp76
-rw-r--r--engines/cruise/cruise_main.h9
-rw-r--r--engines/cruise/ctp.cpp6
-rw-r--r--engines/cruise/dataLoader.cpp4
-rw-r--r--engines/cruise/font.cpp8
-rw-r--r--engines/cruise/function.cpp10
-rw-r--r--engines/cruise/mainDraw.cpp4
-rw-r--r--engines/cruise/menu.cpp8
-rw-r--r--engines/cruise/overlay.cpp8
-rw-r--r--engines/cruise/perso.cpp2
-rw-r--r--engines/cruise/saveload.cpp8
-rw-r--r--engines/cruise/sound.cpp8
-rw-r--r--engines/cruise/volume.cpp14
18 files changed, 128 insertions, 70 deletions
diff --git a/engines/cruise/actor.cpp b/engines/cruise/actor.cpp
index 845867409e..344552bf76 100644
--- a/engines/cruise/actor.cpp
+++ b/engines/cruise/actor.cpp
@@ -599,7 +599,7 @@ int16 computePathfinding(MovementEntry &moveInfo, int16 x, int16 y, int16 destX,
return -1;
}
- perso = persoTable[i] = (persoStruct *) malloc(sizeof(persoStruct));
+ perso = persoTable[i] = (persoStruct *) MemAlloc(sizeof(persoStruct));
ptr = perso->solution[0];
@@ -663,7 +663,7 @@ int16 computePathfinding(MovementEntry &moveInfo, int16 x, int16 y, int16 destX,
return (-1);
}
- perso = persoTable[num] = (persoStruct *) malloc(sizeof(persoStruct));
+ perso = persoTable[num] = (persoStruct *) MemAlloc(sizeof(persoStruct));
perso->inc_jo1 = stepX;
perso->inc_jo2 = stepY;
diff --git a/engines/cruise/background.cpp b/engines/cruise/background.cpp
index 587c790554..cd4e64384b 100644
--- a/engines/cruise/background.cpp
+++ b/engines/cruise/background.cpp
@@ -107,7 +107,7 @@ int loadBackground(const char *name, int idx) {
ptrToFree = gfxModuleData.pPage10;
if (loadFileSub1(&ptrToFree, name, NULL) < 0) {
if (ptrToFree != gfxModuleData.pPage10)
- free(ptrToFree);
+ MemFree(ptrToFree);
return (-18);
}
diff --git a/engines/cruise/backgroundIncrust.cpp b/engines/cruise/backgroundIncrust.cpp
index 78cf49c653..6bd8b270e0 100644
--- a/engines/cruise/backgroundIncrust.cpp
+++ b/engines/cruise/backgroundIncrust.cpp
@@ -49,7 +49,7 @@ void backupBackground(backgroundIncrustStruct *pIncrust, int X, int Y, int width
pIncrust->savedX = X;
pIncrust->savedY = Y;
- pIncrust->ptr = (uint8*)malloc(width * height);
+ pIncrust->ptr = (uint8*)MemAlloc(width * height);
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
int xp = j + X;
@@ -239,9 +239,9 @@ void freeBackgroundIncrustList(backgroundIncrustStruct *pHead) {
backgroundIncrustStruct *pNext = pCurrent->next;
if (pCurrent->ptr)
- free(pCurrent->ptr);
+ MemFree(pCurrent->ptr);
- free(pCurrent);
+ MemFree(pCurrent);
pCurrent = pNext;
}
@@ -292,10 +292,10 @@ void removeBackgroundIncrust(int overlay, int idx, backgroundIncrustStruct * pHe
bx->prev = pCurrent->next;
if (pCurrent->ptr) {
- free(pCurrent->ptr);
+ MemFree(pCurrent->ptr);
}
- free(pCurrent);
+ MemFree(pCurrent);
pCurrent = pNext;
} else {
diff --git a/engines/cruise/cell.cpp b/engines/cruise/cell.cpp
index aeafed4f7a..d185ddae56 100644
--- a/engines/cruise/cell.cpp
+++ b/engines/cruise/cell.cpp
@@ -39,9 +39,9 @@ void resetPtr(cellStruct *ptr) {
void freeMessageList(cellStruct *objPtr) {
/* if (objPtr) {
if (objPtr->next)
- free(objPtr->next);
+ MemFree(objPtr->next);
- free(objPtr);
+ MemFree(objPtr);
} */
}
@@ -143,7 +143,7 @@ void createTextObject(cellStruct *pObject, int overlayIdx, int messageIdx, int x
var_2 = si;
- pNewElement = (cellStruct *) malloc(sizeof(cellStruct));
+ pNewElement = (cellStruct *) MemAlloc(sizeof(cellStruct));
memset(pNewElement, 0, sizeof(cellStruct));
pNewElement->next = pObject->next;
@@ -221,7 +221,7 @@ void removeCell(cellStruct *objPtr, int ovlNumber, int objectIdx, int objType, i
// TODO: complelty wrong
//freeMessageList(si);
- free(si);
+ MemFree(si);
currentObj = dx;
} else {
diff --git a/engines/cruise/cruise.cpp b/engines/cruise/cruise.cpp
index 50b1950c59..98ccc61355 100644
--- a/engines/cruise/cruise.cpp
+++ b/engines/cruise/cruise.cpp
@@ -69,11 +69,16 @@ CruiseEngine::CruiseEngine(OSystem * syst, const CRUISEGameDescription *gameDesc
g_eventRec.registerRandomSource(_rnd, "cruise");
}
+extern void listMemory();
+
CruiseEngine::~CruiseEngine() {
delete _debugger;
delete _sound;
freeSystem();
+
+ if (gDebugLevel > 0)
+ MemoryList();
}
bool CruiseEngine::hasFeature(EngineFeature f) const {
@@ -135,7 +140,7 @@ void CruiseEngine::deinitialise() {
// Clear any backgrounds
for (int i = 0; i < 8; ++i) {
if (backgroundScreens[i]) {
- free(backgroundScreens[i]);
+ MemFree(backgroundScreens[i]);
backgroundScreens[i] = NULL;
}
}
@@ -146,7 +151,7 @@ bool CruiseEngine::loadLanguageStrings() {
// Give preference to a language file
if (f.open("DELPHINE.LNG")) {
- char *data = (char *)malloc(f.size());
+ char *data = (char *)MemAlloc(f.size());
f.read(data, f.size());
char *ptr = data;
diff --git a/engines/cruise/cruise_main.cpp b/engines/cruise/cruise_main.cpp
index 5bde40b7ad..f36651f7e5 100644
--- a/engines/cruise/cruise_main.cpp
+++ b/engines/cruise/cruise_main.cpp
@@ -42,6 +42,61 @@ unsigned int timer = 0;
gfxEntryStruct* linkedMsgList = NULL;
+Common::List<byte *> memList;
+
+void MemoryList() {
+ printf("Current list of un-freed memory blocks:\n");
+ Common::List<byte *>::iterator i;
+ for (i = memList.begin(); i != memList.end(); ++i) {
+ byte *v = *i;
+ printf("%s - %d\n", (const char *)(v - 68), *((int32 *)(v - 72)));
+ }
+}
+
+void *MemoryAlloc(uint32 size, bool clearFlag, int32 lineNum, const char *fname) {
+ byte *result;
+
+ if (gDebugLevel > 0)
+ result = (byte *)malloc(size);
+ else {
+ // Find the point after the final slash
+ const char *fnameP = fname + strlen(fname);
+ while ((fnameP > fname) && (*(fnameP - 1) != '/') && (*(fnameP - 1) != '\\'))
+ --fnameP;
+
+ // Create the new memory block and add it to the memory list
+ byte *v = (byte *)malloc(size + 64 + 8);
+ *((int32 *) v) = lineNum;
+ strncpy((char *)v + 4, fnameP, 63);
+ *((char *)v + 4 + 63) = '\0';
+ *((uint32 *) (v + 68)) = 0x41424344;
+
+ // Add the block to the memory list
+ result = v + 64 + 8;
+ memList.push_back(result);
+ }
+
+ if (clearFlag)
+ memset(result, 0, size);
+
+ return result;
+}
+
+void MemoryFree(void *v) {
+ if (!v)
+ return;
+
+ if (gDebugLevel > 0)
+ free(v);
+ else {
+ byte *p = (byte *)v;
+ assert(*((uint32 *) (p - 4)) == 0x41424344);
+
+ memList.remove(p);
+ free(p - 8 - 64);
+ }
+}
+
void drawBlackSolidBoxSmall() {
// gfxModuleData.drawSolidBox(64,100,256,117,0);
drawSolidBox(64, 100, 256, 117, 0);
@@ -139,7 +194,7 @@ void initBigVar3() {
for (i = 0; i < NUM_FILE_ENTRIES; i++) {
if (filesDatabase[i].subData.ptr) {
- free(filesDatabase[i].subData.ptr);
+ MemFree(filesDatabase[i].subData.ptr);
}
filesDatabase[i].subData.ptr = NULL;
@@ -337,7 +392,7 @@ int loadFileSub1(uint8 **ptr, const char *name, uint8 *ptr2) {
delphineUnpack(unpackedBuffer, pakedBuffer, volumePtrToFileDescriptor[fileIdx].size);
- free(pakedBuffer);
+ MemFree(pakedBuffer);
} else {
loadPackedFileToMem(fileIdx, unpackedBuffer);
}
@@ -354,7 +409,7 @@ void resetFileEntry(int32 entryNumber) {
if (!filesDatabase[entryNumber].subData.ptr)
return;
- free(filesDatabase[entryNumber].subData.ptr);
+ MemFree(filesDatabase[entryNumber].subData.ptr);
filesDatabase[entryNumber].subData.ptr = NULL;
filesDatabase[entryNumber].subData.ptrMask = NULL;
@@ -531,10 +586,10 @@ int removeFinishedScripts(scriptInstanceStruct *ptrHandle) {
oldPtr->nextScriptPtr = ptr->nextScriptPtr;
if (ptr->var6 && ptr->varA) {
- // free(ptr->var6);
+ // MemFree(ptr->var6);
}
- free(ptr);
+ MemFree(ptr);
ptr = oldPtr->nextScriptPtr;
} else {
@@ -701,7 +756,7 @@ void freeStuff2(void) {
void *allocAndZero(int size) {
void *ptr;
- ptr = malloc(size);
+ ptr = MemAlloc(size);
memset(ptr, 0, size);
return ptr;
@@ -1907,13 +1962,4 @@ void CruiseEngine::mainLoop(void) {
} while (!playerDontAskQuit && quitValue2 && quitValue != 7);
}
-void *mallocAndZero(int32 size) {
- void *ptr;
-
- ptr = malloc(size);
- assert(ptr);
- memset(ptr, 0, size);
- return ptr;
-}
-
} // End of namespace Cruise
diff --git a/engines/cruise/cruise_main.h b/engines/cruise/cruise_main.h
index 5f4d5c5c13..0b19ce64e5 100644
--- a/engines/cruise/cruise_main.h
+++ b/engines/cruise/cruise_main.h
@@ -92,7 +92,6 @@ int findHighColor();
ovlData3Struct *getOvlData3Entry(int32 scriptNumber, int32 param);
ovlData3Struct *scriptFunc1Sub2(int32 scriptNumber, int32 param);
void resetFileEntry(int32 entryNumber);
-void *mallocAndZero(int32 size);
uint8 *mainProc14(uint16 overlay, uint16 idx);
void printInfoBlackBox(const char *string);
void waitForPlayerInput(void);
@@ -116,6 +115,14 @@ int removeFinishedScripts(scriptInstanceStruct *ptrHandle);
void initBigVar3(void);
void resetActorPtr(actorStruct *ptr);
+void MemoryList();
+void *MemoryAlloc(uint32 size, bool clearFlag, int32 lineNum, const char *fname);
+void MemoryFree(void *v);
+
+#define mallocAndZero(size) MemoryAlloc(size, true, __LINE__, __FILE__)
+#define MemAlloc(size) MemoryAlloc(size, false, __LINE__, __FILE__)
+#define MemFree(v) MemoryFree(v)
+
} // End of namespace Cruise
#endif
diff --git a/engines/cruise/ctp.cpp b/engines/cruise/ctp.cpp
index aa2a6c7772..59f3cae942 100644
--- a/engines/cruise/ctp.cpp
+++ b/engines/cruise/ctp.cpp
@@ -228,7 +228,7 @@ int initCt(const char *ctpName) {
}
uint8* ptr = NULL;
if (!loadFileSub1(&ptr, ctpName, 0)) {
- free(ptr);
+ MemFree(ptr);
return (-18);
}
@@ -239,7 +239,7 @@ int initCt(const char *ctpName) {
dataPointer += 4;
if (strcmp(fileType, "CTP ")) {
- free(ptr);
+ MemFree(ptr);
return (0);
}
@@ -312,7 +312,7 @@ int initCt(const char *ctpName) {
walkboxZoom[i] = (int16)READ_BE_UINT16(dataPointer);
dataPointer += 2;
}
- free(ptr);
+ MemFree(ptr);
if (ctpName != currentCtpName)
strcpy(currentCtpName, ctpName);
diff --git a/engines/cruise/dataLoader.cpp b/engines/cruise/dataLoader.cpp
index 78aa2cc62d..ec3c42ee46 100644
--- a/engines/cruise/dataLoader.cpp
+++ b/engines/cruise/dataLoader.cpp
@@ -58,7 +58,7 @@ void decodeGfxUnified(dataFileEntry *pCurrentFileEntry, int16 format) {
error("Unkown gfx format %d", format);
}
- uint8 *buffer = (uint8 *)malloc(spriteSize);
+ uint8 *buffer = (uint8 *)MemAlloc(spriteSize);
// Perform format specific decoding
switch (format) {
@@ -131,7 +131,7 @@ void decodeGfxUnified(dataFileEntry *pCurrentFileEntry, int16 format) {
}
}
- free(pCurrentFileEntry->subData.ptr);
+ MemFree(pCurrentFileEntry->subData.ptr);
pCurrentFileEntry->subData.ptr = buffer;
}
diff --git a/engines/cruise/font.cpp b/engines/cruise/font.cpp
index c1afba3c45..bd9b2e2644 100644
--- a/engines/cruise/font.cpp
+++ b/engines/cruise/font.cpp
@@ -169,7 +169,7 @@ void initSystem(void) {
}
void freeSystem(void) {
- free(_systemFNT);
+ MemFree(_systemFNT);
}
void bigEndianShortToNative(void *var) {
@@ -349,7 +349,7 @@ gfxEntryStruct *renderText(int inRightBorder_X, const char *string) {
(uint8 *) mallocAndZero(stringRenderBufferSize);
resetBitmap(currentStrRenderBuffer, stringRenderBufferSize);
- generatedGfxEntry = (gfxEntryStruct *) malloc(sizeof(gfxEntryStruct));
+ generatedGfxEntry = (gfxEntryStruct *) MemAlloc(sizeof(gfxEntryStruct));
generatedGfxEntry->imagePtr = currentStrRenderBuffer;
generatedGfxEntry->imageSize = stringRenderBufferSize / 2;
generatedGfxEntry->fontIndex = fontFileIndex;
@@ -430,10 +430,10 @@ gfxEntryStruct *renderText(int inRightBorder_X, const char *string) {
void freeGfx(gfxEntryStruct *pGfx) {
if (pGfx->imagePtr) {
- free(pGfx->imagePtr);
+ MemFree(pGfx->imagePtr);
}
- free(pGfx);
+ MemFree(pGfx);
}
diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp
index 53549bff9e..8e112ef804 100644
--- a/engines/cruise/function.cpp
+++ b/engines/cruise/function.cpp
@@ -276,8 +276,8 @@ void freeObjectList(cellStruct *pListHead) {
cellStruct *pNext = pCurrent->next;
if (pCurrent->freeze == 0) {
- free(pCurrent->gfxPtr);
- free(pCurrent);
+ MemFree(pCurrent->gfxPtr);
+ MemFree(pCurrent);
}
var_2 = 1;
@@ -938,7 +938,7 @@ int16 Op_RemoveBackground(void) {
if (backgroundIdx > 0 && backgroundIdx < 8) {
if (backgroundScreens[backgroundIdx])
- free(backgroundScreens[backgroundIdx]);
+ MemFree(backgroundScreens[backgroundIdx]);
if (masterScreen == backgroundIdx) {
masterScreen = 0;
@@ -1106,7 +1106,7 @@ actorStruct *addAnimation(actorStruct * pHead, int overlay, int objIdx, int para
return NULL;
}
- actorStruct *pNewElement = (actorStruct *) malloc(sizeof(actorStruct));
+ actorStruct *pNewElement = (actorStruct *) MemAlloc(sizeof(actorStruct));
if (!pNewElement)
return NULL;
@@ -1180,7 +1180,7 @@ int removeAnimation(actorStruct * pHead, int overlay, int objIdx, int objType) {
if (pl->pathId >= 0)
freePerso(pl->pathId);
- free(pl);
+ MemFree(pl);
pl = pl4;
} else {
pl2 = pl;
diff --git a/engines/cruise/mainDraw.cpp b/engines/cruise/mainDraw.cpp
index 3f21a27831..2218c5bb7c 100644
--- a/engines/cruise/mainDraw.cpp
+++ b/engines/cruise/mainDraw.cpp
@@ -1222,7 +1222,7 @@ void drawSprite(int width, int height, cellStruct *currentObjPtr, const uint8 *d
cellStruct* plWork = currentObjPtr;
int workBufferSize = height * (width / 8);
- unsigned char* workBuf = (unsigned char*)malloc(workBufferSize);
+ unsigned char* workBuf = (unsigned char*)MemAlloc(workBufferSize);
memcpy(workBuf, dataBuf, workBufferSize);
int numPasses = 0;
@@ -1261,7 +1261,7 @@ void drawSprite(int width, int height, cellStruct *currentObjPtr, const uint8 *d
}
}
- free(workBuf);
+ MemFree(workBuf);
}
#ifdef _DEBUG
diff --git a/engines/cruise/menu.cpp b/engines/cruise/menu.cpp
index c620a39b7d..c5600c5165 100644
--- a/engines/cruise/menu.cpp
+++ b/engines/cruise/menu.cpp
@@ -39,7 +39,7 @@ menuStruct *menuTable[8];
menuStruct *createMenu(int X, int Y, const char *menuName) {
menuStruct *entry;
- entry = (menuStruct *) malloc(sizeof(menuStruct));
+ entry = (menuStruct *) MemAlloc(sizeof(menuStruct));
ASSERT(entry);
entry->x = X - 160 / 2;
@@ -329,7 +329,7 @@ void freeMenu(menuStruct *pMenu) {
nextSub = pSub->pNext;
- free(pSub);
+ MemFree(pSub);
pSub = nextSub;
}
@@ -338,13 +338,13 @@ void freeMenu(menuStruct *pMenu) {
freeGfx(pElement->gfx);
}
- free(pElement);
+ MemFree(pElement);
pElement = next;
}
freeGfx(pMenu->gfx);
- free(pMenu);
+ MemFree(pMenu);
}
} // End of namespace Cruise
diff --git a/engines/cruise/overlay.cpp b/engines/cruise/overlay.cpp
index 1f7d7302ba..21332c58c5 100644
--- a/engines/cruise/overlay.cpp
+++ b/engines/cruise/overlay.cpp
@@ -123,7 +123,7 @@ int loadOverlay(const char *scriptName) {
delphineUnpack((uint8 *)unpackedBuffer, (const uint8 *)pakedBuffer, volumePtrToFileDescriptor[fileIdx].size);
- free(pakedBuffer);
+ MemFree(pakedBuffer);
} else {
loadPackedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
}
@@ -504,7 +504,7 @@ int loadOverlay(const char *scriptName) {
delphineUnpack((uint8 *) unpackedBuffer, (const uint8 *)pakedBuffer, volumePtrToFileDescriptor[fileIdx].size);
- free(pakedBuffer);
+ MemFree(pakedBuffer);
} else {
loadPackedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
}
@@ -631,12 +631,12 @@ int releaseOverlay(const char *name) {
return -4;
/*
if (overlayTable[overlayIdx].var1E) {
- free(overlayTable[overlayIdx].var1E);
+ MemFree(overlayTable[overlayIdx].var1E);
overlayTable[overlayIdx].var1E = NULL;
}
if (overlayTable[overlayIdx].var16) {
- free(overlayTable[overlayIdx].var16);
+ MemFree(overlayTable[overlayIdx].var16);
overlayTable[overlayIdx].var16 = NULL;
} */
diff --git a/engines/cruise/perso.cpp b/engines/cruise/perso.cpp
index 8bb4164d85..e6dee49c9e 100644
--- a/engines/cruise/perso.cpp
+++ b/engines/cruise/perso.cpp
@@ -34,7 +34,7 @@ int16 numPoly;
void freePerso(int persoIdx) {
if (persoTable[persoIdx]) {
- free(persoTable[persoIdx]);
+ MemFree(persoTable[persoIdx]);
persoTable[persoIdx] = NULL;
}
}
diff --git a/engines/cruise/saveload.cpp b/engines/cruise/saveload.cpp
index 7fcc5ecb1b..53d70044b4 100644
--- a/engines/cruise/saveload.cpp
+++ b/engines/cruise/saveload.cpp
@@ -470,7 +470,7 @@ static void syncIncrust(Common::Serializer &s) {
if (t->saveSize) {
if (s.isLoading())
- t->ptr = (byte *)malloc(t->saveSize);
+ t->ptr = (byte *)MemAlloc(t->saveSize);
s.syncBytes(t->ptr, t->saveSize);
}
@@ -642,7 +642,7 @@ void resetPreload() {
for (unsigned long int i = 0; i < 64; i++) {
if (strlen(preloadData[i].name)) {
if (preloadData[i].ptr) {
- free(preloadData[i].ptr);
+ MemFree(preloadData[i].ptr);
preloadData[i].ptr = NULL;
}
strcpy(preloadData[i].name, "");
@@ -850,7 +850,7 @@ Common::Error loadSavegameData(int saveGameIdx) {
if (ovlRestoreData[j]._sBssSize) {
if (ovlData->data4Ptr) {
- free(ovlData->data4Ptr);
+ MemFree(ovlData->data4Ptr);
}
ovlData->data4Ptr = ovlRestoreData[j]._pBss;
@@ -861,7 +861,7 @@ Common::Error loadSavegameData(int saveGameIdx) {
if (ovlRestoreData[j]._sNumObj) {
if (ovlData->arrayObjVar) {
- free(ovlData->arrayObjVar);
+ MemFree(ovlData->arrayObjVar);
}
ovlData->arrayObjVar = ovlRestoreData[j]._pObj;
diff --git a/engines/cruise/sound.cpp b/engines/cruise/sound.cpp
index 7ca4246785..811cbd4523 100644
--- a/engines/cruise/sound.cpp
+++ b/engines/cruise/sound.cpp
@@ -237,7 +237,7 @@ byte *readBundleSoundFile(const char *name) {
if (fileIdx < 0) return NULL;
int unpackedSize = volumePtrToFileDescriptor[fileIdx].extSize + 2;
- byte *data = (byte *)malloc(unpackedSize);
+ byte *data = (byte *)MemAlloc(unpackedSize);
assert(data);
if (volumePtrToFileDescriptor[fileIdx].size + 2 != unpackedSize) {
@@ -249,7 +249,7 @@ byte *readBundleSoundFile(const char *name) {
delphineUnpack(data, packedBuffer, volumePtrToFileDescriptor[fileIdx].size);
- free(packedBuffer);
+ MemFree(packedBuffer);
} else {
loadPackedFileToMem(fileIdx, data);
}
@@ -747,10 +747,10 @@ void PCSoundFxPlayer::handlePattern(int channel, const byte *patternData) {
void PCSoundFxPlayer::unload() {
for (int i = 0; i < NUM_INSTRUMENTS; ++i) {
- free(_instrumentsData[i]);
+ MemFree(_instrumentsData[i]);
_instrumentsData[i] = NULL;
}
- free(_sfxData);
+ MemFree(_sfxData);
_sfxData = NULL;
_songPlayed = true;
}
diff --git a/engines/cruise/volume.cpp b/engines/cruise/volume.cpp
index b83be1d6ee..58cd2fdb44 100644
--- a/engines/cruise/volume.cpp
+++ b/engines/cruise/volume.cpp
@@ -52,7 +52,7 @@ void loadPal(volumeDataStruct *entry) {
numLoadedPal = PAL_file.readSint16BE();
fileData2 = PAL_file.readSint16BE();
- PAL_ptr = (uint8 *)malloc(numLoadedPal * fileData2);
+ PAL_ptr = (uint8 *)MemAlloc(numLoadedPal * fileData2);
#endif
}
@@ -60,7 +60,7 @@ void closePal(void) {
if (PAL_file.isOpen()) {
PAL_file.close();
- free(PAL_ptr);
+ MemFree(PAL_ptr);
PAL_ptr = NULL;
numLoadedPal = 0;
@@ -72,7 +72,7 @@ int closeBase(void) {
if (currentVolumeFile.isOpen()) {
currentVolumeFile.close();
- free(volumePtrToFileDescriptor);
+ MemFree(volumePtrToFileDescriptor);
strcpy(currentBaseName, "");
}
@@ -180,7 +180,7 @@ int32 findFileInDisksSub1(const char *fileName) {
void freeDisk(void) {
if (currentVolumeFile.isOpen()) {
currentVolumeFile.close();
- free(volumePtrToFileDescriptor);
+ MemFree(volumePtrToFileDescriptor);
}
/* TODO
@@ -316,7 +316,7 @@ int16 findFileInDisks(const char *name) {
int closeCnf(void) {
for (long int i = 0; i < numOfDisks; i++) {
if (volumeData[i].ptr) {
- free(volumeData[i].ptr);
+ MemFree(volumeData[i].ptr);
volumeData[i].ptr = NULL;
}
}
@@ -434,11 +434,11 @@ int16 readVolCnf(void) {
if (fout.isOpen())
fout.write(uncompBuffer, buffer[j].extSize);
- //free(uncompBuffer);
+ //MemFree(uncompBuffer);
}
- free(bufferLocal);
+ MemFree(bufferLocal);
}
fileHandle.close();
}