diff options
author | Paul Gilbert | 2014-01-31 20:22:49 -0500 |
---|---|---|
committer | Paul Gilbert | 2014-01-31 20:22:49 -0500 |
commit | b4ab7c33578dfe35d2d19ea06c2b0d290aa49f59 (patch) | |
tree | 678507f777f491d2c0c5ce439a49523ff3f33a5f | |
parent | 4174c4a2be34242dc7003b4f4a7363caf743bdb5 (diff) | |
download | scummvm-rg350-b4ab7c33578dfe35d2d19ea06c2b0d290aa49f59.tar.gz scummvm-rg350-b4ab7c33578dfe35d2d19ea06c2b0d290aa49f59.tar.bz2 scummvm-rg350-b4ab7c33578dfe35d2d19ea06c2b0d290aa49f59.zip |
VOYEUR: Fix for loading rect resources with invalid rects
-rw-r--r-- | engines/voyeur/files.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/engines/voyeur/files.cpp b/engines/voyeur/files.cpp index 3de0d88621..a2177230c6 100644 --- a/engines/voyeur/files.cpp +++ b/engines/voyeur/files.cpp @@ -705,8 +705,15 @@ RectResource::RectResource(const byte *src, int size) { } for (int i = 0; i < count; ++i, src += 8) { - _entries.push_back(Common::Rect(READ_LE_UINT16(src), READ_LE_UINT16(src + 2), - READ_LE_UINT16(src + 4), READ_LE_UINT16(src + 6))); + int x1 = READ_LE_UINT16(src); + int y1 = READ_LE_UINT16(src + 2); + int x2 = READ_LE_UINT16(src + 4); + int y2 = READ_LE_UINT16(src + 6); + + if (x2 >= x1 && y2 >= y1) + _entries.push_back(Common::Rect(x1, y1, x2, y2)); + else + _entries.push_back(Common::Rect()); } left = _entries[0].left; |