aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/access/room.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/engines/access/room.cpp b/engines/access/room.cpp
index 2c597609e1..181dcd6c5b 100644
--- a/engines/access/room.cpp
+++ b/engines/access/room.cpp
@@ -309,7 +309,10 @@ void Room::buildColumn(int playX, int screenX) {
const byte *pSrc = _playField + _vm->_screen->_scrollRow *
_playFieldWidth + playX;
- for (int y = 0; y <= _vm->_screen->_vWindowHeight; ++y) {
+ // WORKAROUND: Original's use of '+ 1' would frequently cause memory overruns
+ int h = MIN(_vm->_screen->_vWindowHeight + 1, _playFieldHeight);
+
+ for (int y = 0; y < h; ++y) {
byte *pTile = _tile + (*pSrc << 8);
byte *pDest = (byte *)_vm->_buffer1.getBasePtr(screenX, y * TILE_HEIGHT);