Fix memory leaks when reading thumbnails
svn-id: r45142
This commit is contained in:
parent
1dfc808aad
commit
b2bf21f0da
2 changed files with 12 additions and 6 deletions
|
@ -146,10 +146,10 @@ SaveStateList DraciMetaEngine::listSaves(const char *target) const {
|
||||||
if (Draci::readSavegameHeader(in, header)) {
|
if (Draci::readSavegameHeader(in, header)) {
|
||||||
saveList.push_back(SaveStateDescriptor(slotNum, header.saveName));
|
saveList.push_back(SaveStateDescriptor(slotNum, header.saveName));
|
||||||
if (header.thumbnail) {
|
if (header.thumbnail) {
|
||||||
header.thumbnail->free();
|
header.thumbnail->free();
|
||||||
delete header.thumbnail;
|
delete header.thumbnail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete in;
|
delete in;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,7 @@ bool readSavegameHeader(Common::InSaveFile *in, DraciSavegameHeader &header) {
|
||||||
// Get the thumbnail
|
// Get the thumbnail
|
||||||
header.thumbnail = new Graphics::Surface();
|
header.thumbnail = new Graphics::Surface();
|
||||||
if (!Graphics::loadThumbnail(*in, *header.thumbnail)) {
|
if (!Graphics::loadThumbnail(*in, *header.thumbnail)) {
|
||||||
|
header.thumbnail->free();
|
||||||
delete header.thumbnail;
|
delete header.thumbnail;
|
||||||
header.thumbnail = NULL;
|
header.thumbnail = NULL;
|
||||||
return false;
|
return false;
|
||||||
|
@ -131,8 +132,13 @@ Common::Error loadSavegameData(int saveGameIdx, DraciEngine *vm) {
|
||||||
|
|
||||||
// Skip over the savegame header
|
// Skip over the savegame header
|
||||||
DraciSavegameHeader header;
|
DraciSavegameHeader header;
|
||||||
readSavegameHeader(f, header);
|
if (!readSavegameHeader(f, header)) {
|
||||||
if (header.thumbnail) delete header.thumbnail;
|
return Common::kNoGameDataFoundError;
|
||||||
|
}
|
||||||
|
if (header.thumbnail) {
|
||||||
|
header.thumbnail->free();
|
||||||
|
delete header.thumbnail;
|
||||||
|
}
|
||||||
|
|
||||||
// Pre-processing
|
// Pre-processing
|
||||||
vm->_game->rememberRoomNumAsPrevious();
|
vm->_game->rememberRoomNumAsPrevious();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue