- Removed usage of OSystem::quit(), added a _quitRequested variable
- Fixed some leaks, unitialized memory and delete/delete[]-errors svn-id: r22790
This commit is contained in:
parent
321acd2740
commit
05499f58dd
22 changed files with 179 additions and 31 deletions
|
@ -44,6 +44,21 @@ Mult_v2::Mult_v2(GobEngine *vm) : Mult_v1(vm) {
|
|||
for (i = 0; i < 8; i++) _multDatas[i] = 0;
|
||||
}
|
||||
|
||||
Mult_v2::~Mult_v2() {
|
||||
int i;
|
||||
|
||||
freeMultKeys();
|
||||
for (i = 0; i < 8; i++) {
|
||||
_multData2 = _multDatas[i];
|
||||
freeMultKeys();
|
||||
}
|
||||
|
||||
if (_orderArray)
|
||||
delete[] _orderArray;
|
||||
if (_renderData2)
|
||||
delete[] _renderData2;
|
||||
}
|
||||
|
||||
void Mult_v2::loadMult(int16 resId) {
|
||||
int16 i, j;
|
||||
int8 index;
|
||||
|
@ -57,6 +72,7 @@ void Mult_v2::loadMult(int16 resId) {
|
|||
index = (resId & 0x8000) ? *_vm->_global->_inter_execPtr++ : 0;
|
||||
|
||||
_multData2 = new Mult_Data;
|
||||
memset(_multData2, 0, sizeof(Mult_Data));
|
||||
|
||||
// ---.
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
@ -372,11 +388,24 @@ void Mult_v2::playMult(int16 startFrame, int16 endFrame, char checkEscape,
|
|||
_vm->_anim->_areaHeight = 200;
|
||||
_objCount = 4;
|
||||
|
||||
if (_objects)
|
||||
delete[] _objects;
|
||||
if (_orderArray)
|
||||
delete[] _orderArray;
|
||||
if (_renderData)
|
||||
delete[] _renderData;
|
||||
if (_renderData2)
|
||||
delete[] _renderData2;
|
||||
|
||||
_objects = new Mult_Object[_objCount];
|
||||
memset(_objects, 0, _objCount * sizeof(Mult_Object));
|
||||
|
||||
_orderArray = new int8[_objCount];
|
||||
memset(_orderArray, 0, _objCount * sizeof(int8));
|
||||
_renderData = new int16[9 * _objCount];
|
||||
memset(_renderData, 0, _objCount * 9 * sizeof(int16));
|
||||
_renderData2 = new Mult_Object*[_objCount];
|
||||
memset(_renderData2, 0, _objCount * sizeof(Mult_Object*));
|
||||
|
||||
_animArrayX = new int32[_objCount];
|
||||
_animArrayY = new int32[_objCount];
|
||||
|
@ -485,7 +514,7 @@ void Mult_v2::playMult(int16 startFrame, int16 endFrame, char checkEscape,
|
|||
|
||||
_frame++;
|
||||
_vm->_util->waitEndFrame();
|
||||
} while (stop == 0 && stopNoClear == 0);
|
||||
} while (stop == 0 && stopNoClear == 0 && !_vm->_quitRequested);
|
||||
|
||||
if (stopNoClear == 0) {
|
||||
if (_animDataAllocated) {
|
||||
|
@ -504,6 +533,9 @@ void Mult_v2::playMult(int16 startFrame, int16 endFrame, char checkEscape,
|
|||
delete[] _animArrayData;
|
||||
_animArrayData = 0;
|
||||
|
||||
delete[] _orderArray;
|
||||
_orderArray = 0;
|
||||
|
||||
if (_vm->_anim->_animSurf)
|
||||
_vm->_video->freeSurfDesc(_vm->_anim->_animSurf);
|
||||
_vm->_anim->_animSurf = 0;
|
||||
|
@ -1348,6 +1380,10 @@ void Mult_v2::freeMultKeys(void) {
|
|||
_animDataAllocated = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
if (_multDatas[i] == _multData2)
|
||||
_multDatas[i] = 0;
|
||||
|
||||
delete _multData2;
|
||||
_multData2 = 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue