diff options
author | Martin Kiewitz | 2016-05-22 22:51:26 +0200 |
---|---|---|
committer | Martin Kiewitz | 2016-05-22 22:52:11 +0200 |
commit | 018828ba90bd60c457ad8d5e699226646aaeed42 (patch) | |
tree | bddd127814aecf2c2720de438ba34bbe85976b59 | |
parent | c1aca1dce8ae1d8cf929412a6e8dc2ee356a94ca (diff) | |
download | scummvm-rg350-018828ba90bd60c457ad8d5e699226646aaeed42.tar.gz scummvm-rg350-018828ba90bd60c457ad8d5e699226646aaeed42.tar.bz2 scummvm-rg350-018828ba90bd60c457ad8d5e699226646aaeed42.zip |
AGI: Fix invalid read (/crash), when shaking screen
Was a regression caused by commit
e1c36a52b561463217e22687605d2f4f1dc33be6
(upscaling + hercules font support)
Thanks to salty-horse for reporting this issue
-rw-r--r-- | engines/agi/graphics.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/agi/graphics.cpp b/engines/agi/graphics.cpp index 6d3563a451..c7d643d6a0 100644 --- a/engines/agi/graphics.cpp +++ b/engines/agi/graphics.cpp @@ -1178,13 +1178,17 @@ void GfxMgr::drawCharacterOnDisplay(int16 x, int16 y, const byte character, byte #define SHAKE_HORIZONTAL_PIXELS 4 // Sierra used some EGA port trickery to do it, we have to do it by copying pixels around +// +// Shaking locations: +// - Fanmade "Enclosure" right during the intro +// - Space Quest 2 almost right at the start when getting captured (after walking into the space ship) void GfxMgr::shakeScreen(int16 repeatCount) { int shakeNr, shakeCount; uint8 *blackSpace; int16 shakeHorizontalPixels = SHAKE_HORIZONTAL_PIXELS * (2 + _displayWidthMulAdjust); int16 shakeVerticalPixels = SHAKE_VERTICAL_PIXELS * (1 + _displayHeightMulAdjust); - if ((blackSpace = (uint8 *)calloc(shakeVerticalPixels * _displayScreenWidth, 1)) == NULL) + if ((blackSpace = (uint8 *)calloc(shakeHorizontalPixels * _displayScreenWidth, 1)) == NULL) return; shakeCount = repeatCount * 8; // effectively 4 shakes per repeat |