[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.93,1.94
Max Horn
fingolfin at users.sourceforge.net
Thu May 15 10:58:16 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv31772
Modified Files:
object.cpp
Log Message:
fixed the evil, evil COMI crash on Mac OS X (and memory corrupter elsewhere, maybe?). The last part of this change is the crucial one, computing the correct value for right_strip
Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -d -r1.93 -r1.94
--- object.cpp 15 May 2003 00:03:49 -0000 1.93
+++ object.cpp 15 May 2003 17:57:52 -0000 1.94
@@ -1328,27 +1328,29 @@
}
void Scumm::enqueueObject(int objectNumber, int objectX, int objectY, int objectWidth,
- int objectHeight, int scaleX, int scaleY, int image, int mode) {
+ int objectHeight, int scaleX, int scaleY, int image, int mode) {
BlastObject *eo;
ObjectData *od;
- if (_blastObjectQueuePos == sizeof(_blastObjectQueue) / sizeof(_blastObjectQueue[0])) {
+ if (_blastObjectQueuePos >= (int)ARRAYSIZE(_blastObjectQueue)) {
warning("enqueueObject: overflow");
return;
}
+
+ int idx = getObjectIndex(objectNumber);
eo = &_blastObjectQueue[_blastObjectQueuePos++];
eo->number = objectNumber;
eo->posX = objectX + (camera._cur.x & 7);
eo->posY = objectY + (camera._cur.y - (_screenHeight / 2));
if (objectWidth == 0) {
- od = &_objs[getObjectIndex(objectNumber)];
+ od = &_objs[idx];
eo->width = od->width;
} else {
eo->width = objectWidth;
}
if (objectHeight == 0) {
- od = &_objs[getObjectIndex(objectNumber)];
+ od = &_objs[idx];
eo->height = od->height;
} else {
eo->height = objectHeight;
@@ -1662,7 +1664,7 @@
right = vs->width;
left_strip = left >> 3;
- right_strip = (right >> 3) + 1;
+ right_strip = (right - 1) >> 3;
if (left_strip < 0)
left_strip = 0;
More information about the Scummvm-git-logs
mailing list