Ticket #9096: cruise_memory_leaks.patch

File cruise_memory_leaks.patch, 6.3 KB (added by agent-q, 11 years ago)

Cruise Memory Leak Fixes

  • engines/cruise/background.cpp

     
    9494        debug(1, "Loading BG: %s", name);
    9595
    9696        if (!backgroundScreens[idx]) {
     97                free(backgroundScreens[idx]);
    9798                backgroundScreens[idx] = (uint8 *)mallocAndZero(320 * 200);
    9899        }
    99100
     
    112113                return (-18);
    113114        }
    114115
     116       
     117
    115118        if (lastFileSize == 32078 || lastFileSize == 32080 || lastFileSize == 32034) {
    116119                colorMode = 0;
    117120        } else {
     
    208211                loadCVT(&ptr2);
    209212        }
    210213
     214        free(ptrToFree);
    211215
    212216        if (name != backgroundTable[idx].name)
    213217                strcpy(backgroundTable[idx].name, name);
  • engines/cruise/cell.cpp

     
    221221                        // TODO: complelty wrong
    222222                        //freeMessageList(si);
    223223
     224                        if (si->gfxPtr) {
     225                                free(si->gfxPtr);
     226                        }
     227
    224228                        free(si);
    225229
    226230                        currentObj = dx;
  • engines/cruise/cruise_main.cpp

     
    351351        if (entryNumber >= NUM_FILE_ENTRIES)
    352352                return;
    353353
    354         if (!filesDatabase[entryNumber].subData.ptr)
    355                 return;
     354//      if (!filesDatabase[entryNumber].subData.ptr)
     355//              return;
    356356
    357357        free(filesDatabase[entryNumber].subData.ptr);
     358        free(filesDatabase[entryNumber].subData.ptrMask);
    358359
    359360        filesDatabase[entryNumber].subData.ptr = NULL;
    360361        filesDatabase[entryNumber].subData.ptrMask = NULL;
     
    531532                        oldPtr->nextScriptPtr = ptr->nextScriptPtr;
    532533
    533534                        if (ptr->var6 && ptr->varA) {
    534                                 //  free(ptr->var6);
     535                                free(ptr->var6);
    535536                        }
    536537
    537538                        free(ptr);
  • engines/cruise/dataLoader.cpp

     
    192192                width = (width * 8) / 5;
    193193        }
    194194
     195        if (filesDatabase[entryNumber].subData.ptr) {
     196                free(filesDatabase[entryNumber].subData.ptr);
     197        }
     198
    195199        filesDatabase[entryNumber].subData.ptr = (uint8 *) mallocAndZero(size + div);
    196200
    197201        if (!filesDatabase[entryNumber].subData.ptr) {
     
    455459
    456460                if (currentDestEntry == -1) {
    457461                        fileIndex = createResFileEntry(localBuffer.width, localBuffer.height, resourceSize, localBuffer.type);
    458                 } else {
     462                } else {       
    459463                        fileIndex = updateResFileEntry(localBuffer.height, localBuffer.width, resourceSize, currentDestEntry, localBuffer.type);
    460464                }
    461465
  • engines/cruise/function.cpp

     
    275275        while (pCurrent) {
    276276                cellStruct *pNext = pCurrent->next;
    277277
    278                 if (pCurrent->freeze == 0) {
     278                //if (pCurrent->freeze == 0) {
    279279                        free(pCurrent->gfxPtr);
    280280                        free(pCurrent);
    281                 }
     281                //}
    282282
    283283                var_2 = 1;
    284284
  • engines/cruise/overlay.cpp

     
    175175                    (exportEntryStruct *) mallocAndZero(ovlData->numSymbGlob * sizeof(exportEntryStruct));
    176176
    177177                if (!ovlData->arraySymbGlob) {
     178                        free(unpackedBuffer);
    178179                        return (-2);
    179180                }
    180181
     
    191192                ovlData->arrayNameSymbGlob = (char *) mallocAndZero(ovlData->exportNamesSize);
    192193
    193194                if (!ovlData->arrayNameSymbGlob) {
     195                        free(unpackedBuffer);
    194196                        return (-2);
    195197                }
    196198
     
    205207                                                       sizeof(importDataStruct));
    206208
    207209                if (!ovlData->arrayRelocGlob) {
     210                        free(unpackedBuffer);
    208211                        return (-2);
    209212                }
    210213
     
    221224                ovlData->arrayNameRelocGlob = (char *) mallocAndZero(ovlData->nameExportSize);
    222225
    223226                if (!ovlData->arrayNameRelocGlob) {
     227                        free(unpackedBuffer);
    224228                        return (-2);
    225229                }
    226230
     
    234238                ovlData->arrayMsgRelHeader = (linkDataStruct *) mallocAndZero(ovlData->numMsgRelHeader * sizeof(linkDataStruct));
    235239
    236240                if (!ovlData->arrayMsgRelHeader) {
     241                        free(unpackedBuffer);
    237242                        return (-2);
    238243                }
    239244
     
    271276                    (ovlData3Struct *) mallocAndZero(ovlData->numProc * sizeof(ovlData3Struct));
    272277
    273278                if (!ovlData->arrayProc) {
     279                        free(unpackedBuffer);
    274280                        return (-2);
    275281                }
    276282
     
    297303                        tempPtr->dataPtr = (uint8 *) mallocAndZero(tempPtr->sizeOfData);
    298304
    299305                        if (!tempPtr->dataPtr) {
     306                                free(unpackedBuffer);
    300307                                return (-2);
    301308                        }
    302309
     
    324331                    (ovlData3Struct *) mallocAndZero(ovlData->numRel * sizeof(ovlData3Struct));
    325332
    326333                if (!ovlData->ptr1) {
     334                        free(unpackedBuffer);
    327335                        return (-2);
    328336                }
    329337
     
    350358                        tempPtr->dataPtr = (uint8 *) mallocAndZero(tempPtr->sizeOfData);
    351359
    352360                        if (!tempPtr->dataPtr) {
     361                                free(unpackedBuffer);
    353362                                return (-2);
    354363                        }
    355364
     
    379388                                freePtr(unpackedBuffer);
    380389                              } */
    381390
     391                       
     392                        free(unpackedBuffer);
    382393                        return (-2);
    383394                }
    384395
     
    392403                                                    sizeof(objDataStruct));
    393404
    394405                if (!ovlData->arrayObject) {
     406                        free(unpackedBuffer);
    395407                        return (-2);
    396408                }
    397409
     
    419431                                                   sizeof(objectParams));
    420432
    421433                if (!ovlData->arrayObjVar) {
     434                        free(unpackedBuffer);
    422435                        return (-2);
    423436                }
    424437        }
     
    430443                                                   sizeof(objectParams));
    431444
    432445                if (!ovlData->arrayStates) {
     446                        free(unpackedBuffer);
    433447                        return (-2);
    434448                }
    435449
     
    460474                    (uint8 *) mallocAndZero(ovlData->sizeOfData4);
    461475
    462476                if (!ovlData->data4Ptr) {
     477                        free(unpackedBuffer);
    463478                        return (-2);
    464479                }
    465480        }
    466481
     482        free(unpackedBuffer);
     483
    467484        if (ovlData->
    468485                specialString1Length /*|| ovlData->specialString2Length */
    469486                || ovlData->stringTable) {
     
    523540                                 * freePtr(unpackedBuffer);
    524541                                 * } */
    525542
     543                                free(unpackedBuffer);
     544
    526545                                return (-2);
    527546                        }
    528547
     
    541560                                 * freePtr(unpackedBuffer);
    542561                                 * } */
    543562
     563                                free(unpackedBuffer);
    544564                                return (-2);
    545565                        }
    546566
     
    562582                                         * {
    563583                                         * freePtr(unpackedBuffer);
    564584                                         * } */
    565 
     585                                        free(unpackedBuffer);
    566586                                        return (-2);
    567587                                }
    568588
    569589                                s2.read(ovlData->stringTable[i].string, ovlData->stringTable[i].length);
    570590                        }
    571591                }
     592
     593                free(unpackedBuffer);
    572594        }
    573595#ifdef DUMP_SCRIPT
    574596        {