aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2008-05-01 18:38:36 +0000
committerSven Hesse2008-05-01 18:38:36 +0000
commita666136b8ee0569e52441968e0e7853c8483a104 (patch)
tree0685db03238bd0923919bad69418431b97cd2726 /engines/gob
parentc0db9c0d25372a59347b7c72f7e4be7fc2f0f251 (diff)
downloadscummvm-rg350-a666136b8ee0569e52441968e0e7853c8483a104.tar.gz
scummvm-rg350-a666136b8ee0569e52441968e0e7853c8483a104.tar.bz2
scummvm-rg350-a666136b8ee0569e52441968e0e7853c8483a104.zip
Fixing object video related segfault
svn-id: r31797
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/scenery.cpp3
-rw-r--r--engines/gob/videoplayer.cpp3
2 files changed, 6 insertions, 0 deletions
diff --git a/engines/gob/scenery.cpp b/engines/gob/scenery.cpp
index 7338dab15b..3f9ec9e6f2 100644
--- a/engines/gob/scenery.cpp
+++ b/engines/gob/scenery.cpp
@@ -625,6 +625,9 @@ void Scenery::updateAnim(int16 layer, int16 frame, int16 animation, int16 flags,
return;
}
+ if (frame >= _vm->_vidPlayer->getFramesCount(obj.videoSlot - 1))
+ frame = _vm->_vidPlayer->getFramesCount(obj.videoSlot - 1) - 1;
+
// Seek to frame
while (_vm->_vidPlayer->getCurrentFrame(obj.videoSlot - 1) <= frame)
_vm->_vidPlayer->slotPlay(obj.videoSlot - 1);
diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp
index d0e2090453..e088646498 100644
--- a/engines/gob/videoplayer.cpp
+++ b/engines/gob/videoplayer.cpp
@@ -352,6 +352,9 @@ void VideoPlayer::slotPlay(int slot, int16 frame) {
if (frame < 0)
frame = video.getCurrentFrame();
+ if (frame >= video.getFramesCount())
+ return;
+
if (video.getCurrentFrame() != frame)
video.seekFrame(frame);