Skip to content

Commit

Permalink
SCI: fix for heap corruption during lsl3 ending
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kiewitz committed Sep 21, 2013
1 parent c55411a commit fa41ee1
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions engines/sci/graphics/screen.cpp
Expand Up @@ -286,11 +286,15 @@ void GfxScreen::putPixelOnDisplay(int x, int y, byte color) {
* with flood fill, due to small difference in the Bresenham logic.
*/
void GfxScreen::drawLine(Common::Point startPoint, Common::Point endPoint, byte color, byte priority, byte control) {
int16 left = startPoint.x;
int16 top = startPoint.y;
int16 right = endPoint.x;
int16 bottom = endPoint.y;

int16 maxWidth = _width - 1;
int16 maxHeight = _height - 1;
// we need to clip values here, lsl3 room 620 background picture draws a line from 0, 199 t 320, 199
// otherwise we would get heap corruption.
int16 left = CLIP<int16>(startPoint.x, 0, maxWidth);
int16 top = CLIP<int16>(startPoint.y, 0, maxHeight);
int16 right = CLIP<int16>(endPoint.x, 0, maxWidth);
int16 bottom = CLIP<int16>(endPoint.y, 0, maxHeight);

//set_drawing_flag
byte drawMask = getDrawingMask(color, priority, control);

Expand Down

0 comments on commit fa41ee1

Please sign in to comment.