aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2014-01-31 20:22:49 -0500
committerPaul Gilbert2014-01-31 20:22:49 -0500
commitb4ab7c33578dfe35d2d19ea06c2b0d290aa49f59 (patch)
tree678507f777f491d2c0c5ce439a49523ff3f33a5f
parent4174c4a2be34242dc7003b4f4a7363caf743bdb5 (diff)
downloadscummvm-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.cpp11
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;