[Scummvm-git-logs] scummvm branch-2-2 -> fc3975a8f117f777bc6475523081162047640af5
athrxx
athrxx at scummvm.org
Sat Oct 3 22:42:37 UTC 2020
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a3741bde3c KYRA: (EOB) - fix possible invalid memory access
30b8a62c54 KYRA: (EOB) - fix memory leaks
739530da1a KYRA: (EOB) - fix possible invalid memory access
a3a4787aa1 KYRA: (LOL/PC-98) - fix intro font selection
fc3975a8f1 KYRA: (LOL) - fix possible invalid memory access
Commit: a3741bde3cf4b5fa5e331478d69b102bae989c98
https://github.com/scummvm/scummvm/commit/a3741bde3cf4b5fa5e331478d69b102bae989c98
Author: athrxx (athrxx at scummvm.org)
Date: 2020-10-04T00:24:22+02:00
Commit Message:
KYRA: (EOB) - fix possible invalid memory access
(accessing stack variable after scope)
Changed paths:
engines/kyra/resource/staticres_eob.cpp
diff --git a/engines/kyra/resource/staticres_eob.cpp b/engines/kyra/resource/staticres_eob.cpp
index 533a44bc80..99d383e1f2 100644
--- a/engines/kyra/resource/staticres_eob.cpp
+++ b/engines/kyra/resource/staticres_eob.cpp
@@ -468,10 +468,6 @@ void EoBCoreEngine::initStaticResource() {
_coneOfColdDest4 = (const int8 *)_staticres->loadRawData(kEoBBaseConeOfColdDest4, temp);
_coneOfColdGfxTbl = _staticres->loadRawData(kEoBBaseConeOfColdGfxTbl, _coneOfColdGfxTblSize);
- void *sndInfo_ingame = 0;
- void *sndInfo_intro = 0;
- void *sndInfo_finale = 0;
-
if (_flags.platform == Common::kPlatformAmiga) {
const char *const *map = _staticres->loadStrings(kEoBBaseSoundMap, temp2);
_amigaSoundMap = new const char*[temp2];
@@ -485,41 +481,42 @@ void EoBCoreEngine::initStaticResource() {
const char *const *files = _staticres->loadStrings(kEoBBaseSoundFilesIngame, temp);
SoundResourceInfo_AmigaEoB ingame(files, temp, _amigaSoundMap, temp2);
- sndInfo_ingame = &ingame;
files = _staticres->loadStrings(kEoBBaseSoundFilesIntro, temp);
SoundResourceInfo_AmigaEoB intro(files, temp, 0, 0);
- sndInfo_intro = &intro;
files = _staticres->loadStrings(kEoBBaseSoundFilesFinale, temp);
SoundResourceInfo_AmigaEoB finale(files, temp, 0, 0);
- sndInfo_finale = &finale;
+
+ _sound->initAudioResourceInfo(kMusicIngame, &ingame);
+ _sound->initAudioResourceInfo(kMusicIntro, &intro);
+ _sound->initAudioResourceInfo(kMusicFinale, &finale);
+
} else if (_flags.platform == Common::kPlatformFMTowns) {
const char *const *files = _staticres->loadStrings(kEoBBaseSoundFilesIngame, temp);
const uint8 *data = _staticres->loadRawData(kEoB2PcmSoundEffectsIngame, temp2);
SoundResourceInfo_TownsEoB ingame(files, temp, data, temp2, 127);
- sndInfo_ingame = &ingame;
files = _staticres->loadStrings(kEoBBaseSoundFilesIntro, temp);
data = _staticres->loadRawData(kEoB2PcmSoundEffectsIntro, temp2);
SoundResourceInfo_TownsEoB intro(files, temp, data, temp2, 40);
- sndInfo_intro = &intro;
files = _staticres->loadStrings(kEoBBaseSoundFilesFinale, temp);
data = _staticres->loadRawData(kEoB2PcmSoundEffectsFinale, temp2);
SoundResourceInfo_TownsEoB finale(files, temp, data, temp2, 40);
- sndInfo_finale = &finale;
+
+ _sound->initAudioResourceInfo(kMusicIngame, &ingame);
+ _sound->initAudioResourceInfo(kMusicIntro, &intro);
+ _sound->initAudioResourceInfo(kMusicFinale, &finale);
+
} else if (_flags.platform != Common::kPlatformPC98) {
const char *const *files = _staticres->loadStrings(kEoBBaseSoundFilesIngame, temp);
SoundResourceInfo_PC ingame(files, temp);
- sndInfo_ingame = &ingame;
files = _staticres->loadStrings(kEoBBaseSoundFilesIntro, temp);
SoundResourceInfo_PC intro(files, temp);
- sndInfo_intro = &intro;
files = _staticres->loadStrings(kEoBBaseSoundFilesFinale, temp);
SoundResourceInfo_PC finale(files, temp);
- sndInfo_finale = &finale;
- }
- _sound->initAudioResourceInfo(kMusicIngame, sndInfo_ingame);
- _sound->initAudioResourceInfo(kMusicIntro, sndInfo_intro);
- _sound->initAudioResourceInfo(kMusicFinale, sndInfo_finale);
+ _sound->initAudioResourceInfo(kMusicIngame, &ingame);
+ _sound->initAudioResourceInfo(kMusicIntro, &intro);
+ _sound->initAudioResourceInfo(kMusicFinale, &finale);
+ }
// Hard code the following strings, since EOB I doesn't have them in the original.
// EOB I doesn't have load and save menus, because there is only one single
Commit: 30b8a62c54e23f7ae3444fff3f55a5a00e5e2d74
https://github.com/scummvm/scummvm/commit/30b8a62c54e23f7ae3444fff3f55a5a00e5e2d74
Author: athrxx (athrxx at scummvm.org)
Date: 2020-10-04T00:24:25+02:00
Commit Message:
KYRA: (EOB) - fix memory leaks
Changed paths:
engines/kyra/graphics/screen_eob_segacd.cpp
engines/kyra/resource/staticres_eob.cpp
engines/kyra/sequence/sequences_darkmoon.cpp
diff --git a/engines/kyra/graphics/screen_eob_segacd.cpp b/engines/kyra/graphics/screen_eob_segacd.cpp
index 691df2b356..aabc910d90 100644
--- a/engines/kyra/graphics/screen_eob_segacd.cpp
+++ b/engines/kyra/graphics/screen_eob_segacd.cpp
@@ -972,6 +972,7 @@ SegaAnimator::SegaAnimator(SegaRenderer *renderer) : _renderer(renderer), _needU
SegaAnimator::~SegaAnimator() {
delete[] _sprites;
+ delete[] _tempBuffer;
}
void SegaAnimator::initSprite(int id, int16 x, int16 y, uint16 nameTbl, uint16 hw) {
diff --git a/engines/kyra/resource/staticres_eob.cpp b/engines/kyra/resource/staticres_eob.cpp
index 99d383e1f2..0ecf1b33ae 100644
--- a/engines/kyra/resource/staticres_eob.cpp
+++ b/engines/kyra/resource/staticres_eob.cpp
@@ -1791,18 +1791,18 @@ void DarkMoonEngine::initSpells() {
int temp;
const uint8 *data = _staticres->loadRawData(kEoBBaseSpellProperties, temp);
- Common::MemoryReadStreamEndian *src = new Common::MemoryReadStreamEndian(data, temp, _flags.platform == Common::kPlatformAmiga);
+ Common::MemoryReadStreamEndian src(data, temp, _flags.platform == Common::kPlatformAmiga);
for (int i = 0; i < _numSpells; i++) {
EoBSpell *s = &_spells[i];
- src->skip(8);
- s->flags = src->readUint16();
- src->skip(8);
- s->sound = src->readByte();
+ src.skip(8);
+ s->flags = src.readUint16();
+ src.skip(8);
+ s->sound = src.readByte();
if (_flags.platform == Common::kPlatformAmiga)
- src->skip(1);
- s->effectFlags = src->readUint32();
- s->damageFlags = src->readUint16();
+ src.skip(1);
+ s->effectFlags = src.readUint32();
+ s->damageFlags = src.readUint16();
}
}
diff --git a/engines/kyra/sequence/sequences_darkmoon.cpp b/engines/kyra/sequence/sequences_darkmoon.cpp
index 33c27ca17e..626e49bb89 100644
--- a/engines/kyra/sequence/sequences_darkmoon.cpp
+++ b/engines/kyra/sequence/sequences_darkmoon.cpp
@@ -1145,7 +1145,7 @@ DarkmoonSequenceHelper::~DarkmoonSequenceHelper() {
for (int i = 0; i < 7; i++)
delete[] _fadingTables[i];
- for (int i = 0; i < 30; i++)
+ for (int i = 0; i < 54; i++)
delete[] _shapes[i];
delete[] _shapes;
@@ -1626,7 +1626,7 @@ void DarkmoonSequenceHelper::init(DarkmoonSequenceHelper::Mode mode) {
delete[] fadeData;
_shapes = new const uint8*[54];
- memset(_shapes, 0, 54 * sizeof(uint8 *));
+ memset(_shapes, 0, 54 * sizeof(uint8*));
_fadePalTimer = 0;
_fadePalRate = 0;
Commit: 739530da1aa36be4aaf078e35c21fadb0ed62162
https://github.com/scummvm/scummvm/commit/739530da1aa36be4aaf078e35c21fadb0ed62162
Author: athrxx (athrxx at scummvm.org)
Date: 2020-10-04T00:24:28+02:00
Commit Message:
KYRA: (EOB) - fix possible invalid memory access
(The original does the invalid access, too. Even the Sega-CD version.)
Changed paths:
engines/kyra/engine/chargen.cpp
diff --git a/engines/kyra/engine/chargen.cpp b/engines/kyra/engine/chargen.cpp
index 65a5ee98b8..ed2a21097f 100644
--- a/engines/kyra/engine/chargen.cpp
+++ b/engines/kyra/engine/chargen.cpp
@@ -1442,7 +1442,7 @@ void CharacterGenerator::finish() {
for (int ii = 0; ii < 4; ii++) {
int l = classDefaultItemsListIndex[(c->cClass << 2) + ii] << 1;
- if (classDefaultItemsList[l] == -1)
+ if (l < 0 || classDefaultItemsList[l] == -1)
continue;
int d = classDefaultItemsList[l];
Commit: a3a4787aa1b7b1605ec20b4898a28af6fcab871f
https://github.com/scummvm/scummvm/commit/a3a4787aa1b7b1605ec20b4898a28af6fcab871f
Author: athrxx (athrxx at scummvm.org)
Date: 2020-10-04T00:24:31+02:00
Commit Message:
KYRA: (LOL/PC-98) - fix intro font selection
Changed paths:
engines/kyra/sequence/sequences_lol.cpp
diff --git a/engines/kyra/sequence/sequences_lol.cpp b/engines/kyra/sequence/sequences_lol.cpp
index f67f7a62a2..27e08b7a98 100644
--- a/engines/kyra/sequence/sequences_lol.cpp
+++ b/engines/kyra/sequence/sequences_lol.cpp
@@ -230,7 +230,7 @@ void LoLEngine::showIntro() {
_screen->loadFont(Screen::FID_8_FNT, "NEW8P.FNT");
_screen->loadFont(Screen::FID_INTRO_FNT, "INTRO.FNT");
- _screen->setFont((_flags.lang == Common::JA_JPN && _flags.use16ColorMode) ? Screen::FID_SJIS_FNT : Screen::FID_8_FNT);
+ _screen->setFont((_flags.lang == Common::JA_JPN && _flags.use16ColorMode) ? Screen::FID_SJIS_TEXTMODE_FNT : Screen::FID_8_FNT);
_tim->resetFinishedFlag();
_tim->setLangData("LOLINTRO.DIP");
Commit: fc3975a8f117f777bc6475523081162047640af5
https://github.com/scummvm/scummvm/commit/fc3975a8f117f777bc6475523081162047640af5
Author: athrxx (athrxx at scummvm.org)
Date: 2020-10-04T00:24:34+02:00
Commit Message:
KYRA: (LOL) - fix possible invalid memory access
(another bug from the original code)
Changed paths:
engines/kyra/gui/gui_lol.cpp
diff --git a/engines/kyra/gui/gui_lol.cpp b/engines/kyra/gui/gui_lol.cpp
index 5f9dee26a6..1ef0eeb0e8 100644
--- a/engines/kyra/gui/gui_lol.cpp
+++ b/engines/kyra/gui/gui_lol.cpp
@@ -678,8 +678,8 @@ void LoLEngine::gui_toggleButtonDisplayMode(int shapeIndex, int mode) {
int pageNum = 0;
- int16 x1 = buttonX[shapeIndex - subst];
- int16 y1 = buttonY[shapeIndex - subst];
+ int16 x1 = shapeIndex ? buttonX[shapeIndex - subst] : 0;
+ int16 y1 = shapeIndex ? buttonY[shapeIndex - subst] : 0;
int16 x2 = 0;
int16 y2 = 0;
uint32 t = 0;
More information about the Scummvm-git-logs
mailing list