diff options
author | Colin Snover | 2017-11-15 16:24:37 -0600 |
---|---|---|
committer | Eugene Sandulenko | 2017-11-18 22:35:12 +0100 |
commit | bb26bf7994420a8af3fd5e1c3a1b174448aefc5c (patch) | |
tree | 5fb930b752f2668f8cd2a120d89dffa96f608e51 /engines/fullpipe/stateloader.cpp | |
parent | ca5a86e703d3fe72cc370845622097ee16f4d67e (diff) | |
download | scummvm-rg350-bb26bf7994420a8af3fd5e1c3a1b174448aefc5c.tar.gz scummvm-rg350-bb26bf7994420a8af3fd5e1c3a1b174448aefc5c.tar.bz2 scummvm-rg350-bb26bf7994420a8af3fd5e1c3a1b174448aefc5c.zip |
FULLPIPE: Fix memory leaks and unnecessary indirect allocations in Motion and Sc2
Diffstat (limited to 'engines/fullpipe/stateloader.cpp')
-rw-r--r-- | engines/fullpipe/stateloader.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp index cc5c904897..4041eb15c9 100644 --- a/engines/fullpipe/stateloader.cpp +++ b/engines/fullpipe/stateloader.cpp @@ -109,20 +109,19 @@ bool GameLoader::readSavegame(const char *fname) { debugC(3, kDebugLoading, "Reading %d infos", arrSize); for (uint i = 0; i < arrSize; i++) { - _sc2array[i]._picAniInfosCount = archive->readUint32LE(); - if (_sc2array[i]._picAniInfosCount) - debugC(3, kDebugLoading, "Count %d: %d", i, _sc2array[i]._picAniInfosCount); + const uint picAniInfosCount = archive->readUint32LE(); + if (picAniInfosCount) + debugC(3, kDebugLoading, "Count %d: %d", i, picAniInfosCount); - free(_sc2array[i]._picAniInfos); - _sc2array[i]._picAniInfos = (PicAniInfo **)malloc(sizeof(PicAniInfo *) * _sc2array[i]._picAniInfosCount); + _sc2array[i]._picAniInfos.clear(); + _sc2array[i]._picAniInfos.resize(picAniInfosCount); - for (int j = 0; j < _sc2array[i]._picAniInfosCount; j++) { - _sc2array[i]._picAniInfos[j] = new PicAniInfo(); - _sc2array[i]._picAniInfos[j]->load(*archive); + for (uint j = 0; j < picAniInfosCount; j++) { + _sc2array[i]._picAniInfos[j].load(*archive); } - _sc2array[i]._isLoaded = 0; + _sc2array[i]._isLoaded = false; } delete archiveStream; |