mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-21 19:51:49 +00:00
CRUISE: Fix Memory Accesses Errors and Leaks Reported By Valgrind
Most of these fixes are fairly simple, though the clamping of ArrayStates accesses in object.cpp _might_ cause regressions. None are obvious on basic playtest check, but the game will need a full playtest. svn-id: r54408
This commit is contained in:
parent
8045c4f87a
commit
e48930c16e
@ -65,9 +65,7 @@ cellStruct *addCell(cellStruct *pHead, int16 overlayIdx, int16 objIdx, int16 typ
|
||||
if (currentHead2->type != 5) {
|
||||
int16 lvar2;
|
||||
|
||||
getSingleObjectParam(currentHead2->overlay, currentHead2->idx, 2, &lvar2);
|
||||
|
||||
if (lvar2 >= var)
|
||||
if(getSingleObjectParam(currentHead2->overlay, currentHead2->idx, 2, &lvar2) >= 0 && lvar2 >= var)
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -79,6 +79,12 @@ int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx, objectParamsQuer
|
||||
state = globalVars[overlayTable[overlayIdx].state + ptr->_stateTableIdx];
|
||||
|
||||
ptr2 = &ovlData->arrayStates[ptr->_firstStateIdx + state];
|
||||
|
||||
if (ptr->_firstStateIdx + state < 0) {
|
||||
debug(0, "Invalid Negative arrayState index in getMultipleObjectParam(overlayIdx: %d, objectIdx: %d)... Forcing to 0", overlayIdx, objectIdx);
|
||||
ptr2 = &ovlData->arrayStates[0];
|
||||
}
|
||||
|
||||
state2 = ptr2->state;
|
||||
break;
|
||||
}
|
||||
@ -242,6 +248,11 @@ int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3, int16 *
|
||||
state = globalVars[overlayTable[overlayIdx].state + ptr->_stateTableIdx];
|
||||
|
||||
ptr2 = &ovlData->arrayStates[ptr->_firstStateIdx + state];
|
||||
|
||||
if (ptr->_firstStateIdx + state < 0) {
|
||||
debug(0, "Invalid Negative arrayState index in getSingleObjectParam(overlayIdx: %d, param2: %d, param3: %d)... Forcing to 0", overlayIdx, param2, param3);
|
||||
ptr2 = &ovlData->arrayStates[0];
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARIABLE: {
|
||||
|
@ -40,6 +40,7 @@ class PCSoundDriver {
|
||||
public:
|
||||
typedef void (*UpdateCallback)(void *);
|
||||
|
||||
PCSoundDriver() { _upCb = NULL, _upRef = NULL, _musicVolume = 0, _sfxVolume = 0; }
|
||||
virtual ~PCSoundDriver() {}
|
||||
|
||||
virtual void setupChannel(int channel, const byte *data, int instrument, int volume) = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user