Ticket #8521: saga_mem_leaks.diff
File saga_mem_leaks.diff, 2.7 KB (added by , 18 years ago) |
---|
-
saga/music.cpp
305 305 _songTable = 0; 306 306 307 307 _track = NULL; 308 309 _midiMusicData = NULL; 310 _midiMusicSize = 0; 308 311 } 309 312 310 313 Music::~Music() { … … 316 319 delete smfParser; 317 320 318 321 free(_songTable); 322 free(_midiMusicData); 319 323 } 320 324 321 325 void Music::musicVolumeGaugeCallback(void *refCon) { … … 371 375 AudioStream *audioStream = NULL; 372 376 MidiParser *parser; 373 377 ResourceContext *context; 374 byte *resourceData;375 size_t resourceSize;376 378 377 379 debug(2, "Music::play %d, %d", resourceId, flags); 378 380 … … 432 434 flags = MUSIC_NORMAL; 433 435 } 434 436 435 // FIXME: Is resource_data ever freed?436 437 // Load MIDI/XMI resource data 437 438 438 439 if (_vm->getGameType() == GType_ITE) { … … 473 474 474 475 _player->setGM(true); 475 476 476 _vm->_resource->loadResource(context, resourceId, resourceData, resourceSize); 477 478 if (resourceSize < 4) { 477 if (_midiMusicData) { 478 free(_midiMusicData); 479 } 480 _vm->_resource->loadResource(context, resourceId, _midiMusicData, _midiMusicSize); 481 if (_midiMusicSize < 4) { 479 482 error("Music::play() wrong music resource size"); 480 483 } 481 484 482 if (xmidiParser->loadMusic( resourceData, resourceSize)) {485 if (xmidiParser->loadMusic(_midiMusicData, _midiMusicSize)) { 483 486 if (_vm->getGameType() == GType_ITE) 484 487 _player->setGM(false); 485 488 486 489 parser = xmidiParser; 487 490 } else { 488 if (smfParser->loadMusic( resourceData, resourceSize)) {491 if (smfParser->loadMusic(_midiMusicData, _midiMusicSize)) { 489 492 parser = smfParser; 490 493 } else { 491 494 error("Music::play() wrong music resource"); -
saga/music.h
92 92 93 93 byte *_musicData; 94 94 uint16 *_buf; 95 uint32_musicDataSize;95 size_t _musicDataSize; 96 96 }; 97 97 98 98 class Music { … … 137 137 MidiParser *xmidiParser; 138 138 MidiParser *smfParser; 139 139 140 byte *_midiMusicData; 141 size_t _midiMusicSize; 142 140 143 DigitalTrackInfo *_track; 141 144 142 145 static void musicVolumeGaugeCallback(void *refCon); -
saga/rscfile.cpp
313 313 subjectResourceData->offset = resourceData->offset; 314 314 subjectResourceData->size = resourceData->size; 315 315 } 316 316 free(tableBuffer); 317 317 } 318 318 319 319 //process external patch files … … 547 547 } 548 548 549 549 _vm->_anim->loadCutawayList(resourcePointer, resourceLength); 550 free(resourcePointer); 550 551 551 552 _vm->_resource->loadResource(resourceContext, _metaResource.songTableID, resourcePointer, resourceLength); 552 553