HUFO: Fix CID 1002880, 1002881. Use nullptr where possible instead of 0

This commit is contained in:
Strangerke 2013-11-01 14:15:19 +01:00
parent f1abc0c302
commit 79ecd017e2
14 changed files with 135 additions and 83 deletions

View File

@ -34,8 +34,10 @@
namespace Hugo {
TopMenu::TopMenu(HugoEngine *vm) : Dialog(0, 0, kMenuWidth, kMenuHeight), _arrayBmp(0), _arraySize(0),
_vm(vm) {
TopMenu::TopMenu(HugoEngine *vm) : Dialog(0, 0, kMenuWidth, kMenuHeight), _vm(vm) {
_arrayBmp = nullptr;
_arraySize = 0;
init();
}

View File

@ -75,13 +75,13 @@ static const byte stdMouseCursor[] = {
Screen::Screen(HugoEngine *vm) : _vm(vm) {
_mainPalette = 0;
_curPalette = 0;
_mainPalette = nullptr;
_curPalette = nullptr;
_dlAddIndex = 0;
_dlRestoreIndex = 0;
for (int i = 0; i < kNumFonts; i++) {
_arrayFont[i] = 0;
_arrayFont[i] = nullptr;
fontLoadedFl[i] = false;
}
for (int i = 0; i < kBlitListSize; i++) {

View File

@ -246,13 +246,13 @@ SoundPtr FileManager::getSound(const int16 sound, uint16 *size) {
// No more to do if SILENCE (called for cleanup purposes)
if (sound == _vm->_soundSilence)
return 0;
return nullptr;
// Open sounds file
Common::File fp; // Handle to SOUND_FILE
if (!fp.open(getSoundFilename())) {
warning("Hugo Error: File not found %s", getSoundFilename());
return 0;
return nullptr;
}
if (!_hasReadHeader) {

View File

@ -46,11 +46,11 @@
namespace Hugo {
HugoEngine *HugoEngine::s_Engine = 0;
HugoEngine *HugoEngine::s_Engine = nullptr;
HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(syst), _gameDescription(gd),
_hero(0), _heroImage(0), _defltTunes(0), _numScreens(0), _tunesNbr(0), _soundSilence(0), _soundTest(0),
_screenStates(0), _numStates(0), _score(0), _maxscore(0), _lastTime(0), _curTime(0), _episode(0)
_hero(nullptr), _heroImage(0), _defltTunes(nullptr), _numScreens(0), _tunesNbr(0), _soundSilence(0), _soundTest(0),
_screenStates(nullptr), _numStates(0), _score(0), _maxscore(0), _lastTime(0), _curTime(0), _episode(nullptr)
{
_system = syst;
DebugMan.addDebugChannel(kDebugSchedule, "Schedule", "Script Schedule debug level");
@ -67,16 +67,16 @@ HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(sy
_console = new HugoConsole(this);
_rnd = 0;
_screen = NULL;
_mouse = NULL;
_inventory = NULL;
_parser = NULL;
_route = NULL;
_sound = NULL;
_intro = NULL;
_object = NULL;
_text = NULL;
_topMenu = NULL;
_screen = nullptr;
_mouse = nullptr;
_inventory = nullptr;
_parser = nullptr;
_route = nullptr;
_sound = nullptr;
_intro = nullptr;
_object = nullptr;
_text = nullptr;
_topMenu = nullptr;
_status._storyModeFl = false;
_status._gameOverFl = false;
_status._lookFl = false;

View File

@ -260,7 +260,7 @@ public:
// Used by the qsort function
static HugoEngine &get() {
assert(s_Engine != 0);
assert(s_Engine != nullptr);
return *s_Engine;
}

View File

@ -39,9 +39,10 @@
namespace Hugo {
IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm), _introX(0), _introY(0) {
IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm) {
_introXSize = 0;
_introTicks = 0;
_introX = _introY = nullptr;
}
IntroHandler::~IntroHandler() {
@ -74,6 +75,7 @@ void IntroHandler::loadIntroData(Common::SeekableReadStream &in) {
void IntroHandler::freeIntroData() {
free(_introX);
free(_introY);
_introX = _introY = nullptr;
}
intro_v1d::intro_v1d(HugoEngine *vm) : IntroHandler(vm) {

View File

@ -44,7 +44,8 @@ namespace Hugo {
static const int kMaxDisp = (kXPix / kInvDx); // Max icons displayable
InventoryHandler::InventoryHandler(HugoEngine *vm) : _vm(vm), _invent(0) {
InventoryHandler::InventoryHandler(HugoEngine *vm) : _vm(vm) {
_invent = nullptr;
_firstIconId = 0;
_inventoryState = kInventoryOff; // Inventory icon bar state
_inventoryHeight = 0; // Inventory icon bar pos
@ -62,6 +63,7 @@ void InventoryHandler::setInventoryState(Istate state) {
void InventoryHandler::freeInvent() {
free(_invent);
_invent = nullptr;
}
int16 InventoryHandler::getInventoryObjId() const {

View File

@ -45,7 +45,8 @@
namespace Hugo {
MouseHandler::MouseHandler(HugoEngine *vm) : _vm(vm), _hotspots(0) {
MouseHandler::MouseHandler(HugoEngine *vm) : _vm(vm) {
_hotspots = nullptr;
_leftButtonFl = false;
_rightButtonFl = false;
_jumpExitFl = false; // Can't jump to a screen exit
@ -83,6 +84,7 @@ void MouseHandler::setMouseY(int y) {
void MouseHandler::freeHotspots() {
free(_hotspots);
_hotspots = nullptr;
}
bool MouseHandler::getJumpExitFl() const {

View File

@ -44,7 +44,9 @@
namespace Hugo {
ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm), _objects(0), _uses(0) {
ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm) {
_uses = nullptr;
_objects = nullptr;
_numObj = 0;
_objCount = 0;
_usesSize = 0;
@ -249,47 +251,49 @@ void ObjectHandler::lookObject(Object *obj) {
void ObjectHandler::freeObjects() {
debugC(1, kDebugObject, "freeObjects");
if (_vm->_hero != 0 && _vm->_hero->_seqList[0]._seqPtr != 0) {
if (_vm->_hero != nullptr && _vm->_hero->_seqList[0]._seqPtr != nullptr) {
// Free all sequence lists and image data
for (int16 i = 0; i < _numObj; i++) {
Object *obj = &_objects[i];
for (int16 j = 0; j < obj->_seqNumb; j++) {
Seq *seq = obj->_seqList[j]._seqPtr;
Seq *next;
if (seq == 0) // Failure during database load
if (seq == nullptr) // Failure during database load
break;
if (seq->_imagePtr != 0) {
if (seq->_imagePtr != nullptr) {
free(seq->_imagePtr);
seq->_imagePtr = 0;
seq->_imagePtr = nullptr;
}
seq = seq->_nextSeqPtr;
while (seq != obj->_seqList[j]._seqPtr) {
if (seq->_imagePtr != 0) {
if (seq->_imagePtr != nullptr) {
free(seq->_imagePtr);
seq->_imagePtr = 0;
seq->_imagePtr = nullptr;
}
next = seq->_nextSeqPtr;
free(seq);
seq = next;
}
free(seq);
seq = nullptr;
}
}
}
if (_uses) {
if (_uses != nullptr) {
for (int16 i = 0; i < _usesSize; i++)
free(_uses[i]._targets);
free(_uses);
_uses = nullptr;
}
for (int16 i = 0; i < _objCount; i++) {
free(_objects[i]._stateDataIndex);
_objects[i]._stateDataIndex = 0;
_objects[i]._stateDataIndex = nullptr;
}
free(_objects);
_objects = 0;
_objects = nullptr;
}
/**
@ -414,7 +418,7 @@ void ObjectHandler::readUse(Common::ReadStream &in, Uses &curUse) {
*/
void ObjectHandler::loadObjectUses(Common::ReadStream &in) {
Uses tmpUse;
tmpUse._targets = 0;
tmpUse._targets = nullptr;
//Read _uses
for (int varnt = 0; varnt < _vm->_numVariant; varnt++) {
@ -430,7 +434,7 @@ void ObjectHandler::loadObjectUses(Common::ReadStream &in) {
else {
readUse(in, tmpUse);
free(tmpUse._targets);
tmpUse._targets = 0;
tmpUse._targets = nullptr;
}
}
}
@ -442,7 +446,7 @@ void ObjectHandler::readObject(Common::ReadStream &in, Object &curObject) {
uint16 numSubElem = in.readUint16BE();
if (numSubElem == 0)
curObject._stateDataIndex = 0;
curObject._stateDataIndex = nullptr;
else
curObject._stateDataIndex = (uint16 *)malloc(sizeof(uint16) * numSubElem);
for (int j = 0; j < numSubElem; j++)
@ -453,16 +457,16 @@ void ObjectHandler::readObject(Common::ReadStream &in, Object &curObject) {
curObject._vyPath = in.readSint16BE();
curObject._actIndex = in.readUint16BE();
curObject._seqNumb = in.readByte();
curObject._currImagePtr = 0;
curObject._currImagePtr = nullptr;
if (curObject._seqNumb == 0) {
curObject._seqList[0]._imageNbr = 0;
curObject._seqList[0]._seqPtr = 0;
curObject._seqList[0]._seqPtr = nullptr;
}
for (int j = 0; j < curObject._seqNumb; j++) {
curObject._seqList[j]._imageNbr = in.readUint16BE();
curObject._seqList[j]._seqPtr = 0;
curObject._seqList[j]._seqPtr = nullptr;
}
curObject._cycling = (Cycle)in.readByte();
@ -498,7 +502,7 @@ void ObjectHandler::readObject(Common::ReadStream &in, Object &curObject) {
void ObjectHandler::loadObjectArr(Common::ReadStream &in) {
debugC(6, kDebugObject, "loadObject(&in)");
Object tmpObject;
tmpObject._stateDataIndex = 0;
tmpObject._stateDataIndex = nullptr;
for (int varnt = 0; varnt < _vm->_numVariant; varnt++) {
uint16 numElem = in.readUint16BE();
@ -515,7 +519,7 @@ void ObjectHandler::loadObjectArr(Common::ReadStream &in) {
// Skip over uneeded objects.
readObject(in, tmpObject);
free(tmpObject._stateDataIndex);
tmpObject._stateDataIndex = 0;
tmpObject._stateDataIndex = nullptr;
}
}
}

View File

@ -44,14 +44,20 @@
namespace Hugo {
Parser::Parser(HugoEngine *vm) : _vm(vm), _putIndex(0), _getIndex(0), _arrayReqs(0), _catchallList(0), _backgroundObjects(0), _cmdList(0) {
Parser::Parser(HugoEngine *vm) : _vm(vm), _putIndex(0), _getIndex(0) {
_catchallList = nullptr;
_arrayReqs = nullptr;
_backgroundObjects = nullptr;
_backgroundObjectsSize = 0;
_cmdList = nullptr;
_cmdListSize = 0;
_cmdLineIndex = 0;
_cmdLineTick = 0;
_cmdLineCursor = '_';
_cmdLine[0] = '\0';
_cmdListSize = 0;
_checkDoubleF1Fl = false;
_backgroundObjectsSize = 0;
}
Parser::~Parser() {
@ -172,7 +178,7 @@ const char *Parser::useBG(const char *name) {
return _vm->_text->getVerb(p[i]._verbIndex, 0);
}
return 0;
return nullptr;
}
void Parser::freeParser() {
@ -180,20 +186,24 @@ void Parser::freeParser() {
for (int i = 0; _arrayReqs[i] != 0; i++)
free(_arrayReqs[i]);
free(_arrayReqs);
_arrayReqs = nullptr;
}
free(_catchallList);
_catchallList = nullptr;
if (_backgroundObjects) {
for (int i = 0; i < _backgroundObjectsSize; i++)
free(_backgroundObjects[i]);
free(_backgroundObjects);
_backgroundObjects = nullptr;
}
if (_cmdList) {
for (int i = 0; i < _cmdListSize; i++)
free(_cmdList[i]);
free(_cmdList);
_cmdList = nullptr;
}
}
@ -421,7 +431,7 @@ const char *Parser::findNoun() const {
return _vm->_text->getNoun(i, 0);
}
}
return 0;
return nullptr;
}
/**
@ -436,7 +446,7 @@ const char *Parser::findVerb() const {
return _vm->_text->getVerb(i, 0);
}
}
return 0;
return nullptr;
}
/**

View File

@ -314,7 +314,7 @@ Common::Point *Route::newNode() {
_routeListIndex++;
if (_routeListIndex >= kMaxNodes) // Too many nodes
return 0; // Incomplete route - failure
return nullptr; // Incomplete route - failure
_route[_routeListIndex] = _route[_routeListIndex - 1]; // Initialize with previous node
return &_route[_routeListIndex];

View File

@ -47,10 +47,23 @@
namespace Hugo {
Scheduler::Scheduler(HugoEngine *vm) : _vm(vm), _actListArr(0), _curTick(0), _oldTime(0), _refreshTimeout(0), _points(0), _screenActs(0) {
Scheduler::Scheduler(HugoEngine *vm) : _vm(vm) {
_actListArr = nullptr;
_curTick = 0;
_oldTime = 0;
_refreshTimeout = 0;
_points = nullptr;
_screenActs = nullptr;
memset(_events, 0, sizeof(_events));
_numBonuses = 0;
_screenActsSize = 0;
_actListArrSize = 0;
_alNewscrIndex = 0;
_freeEvent = nullptr;
_headEvent = nullptr;
_tailEvent = nullptr;
}
Scheduler::~Scheduler() {
@ -69,14 +82,14 @@ void Scheduler::initEventQueue() {
// Chain nextEvent from first to last
for (int i = kMaxEvents; --i;)
_events[i - 1]._nextEvent = &_events[i];
_events[kMaxEvents - 1]._nextEvent = 0;
_events[kMaxEvents - 1]._nextEvent = nullptr;
// Chain prevEvent from last to first
for (int i = 1; i < kMaxEvents; i++)
_events[i]._prevEvent = &_events[i - 1];
_events[0]._prevEvent = 0;
_events[0]._prevEvent = nullptr;
_headEvent = _tailEvent = 0; // Event list is empty
_headEvent = _tailEvent = nullptr; // Event list is empty
_freeEvent = _events; // Free list is full
}
@ -90,7 +103,7 @@ Event *Scheduler::getQueue() {
error("An error has occurred: %s", "getQueue");
Event *resEvent = _freeEvent;
_freeEvent = _freeEvent->_nextEvent;
resEvent->_nextEvent = 0;
resEvent->_nextEvent = nullptr;
return resEvent;
}
@ -597,7 +610,7 @@ void Scheduler::loadScreenAct(Common::SeekableReadStream &in) {
for (int i = 0; i < numElem; i++) {
uint16 numSubElem = in.readUint16BE();
if (numSubElem == 0) {
_screenActs[i] = 0;
_screenActs[i] = nullptr;
} else {
_screenActs[i] = (uint16 *)malloc(sizeof(uint16) * numSubElem);
for (int j = 0; j < numSubElem; j++)
@ -617,11 +630,14 @@ void Scheduler::freeScheduler() {
debugC(6, kDebugSchedule, "freeActListArr()");
free(_points);
_points = nullptr;
if (_screenActs) {
for (int i = 0; i < _screenActsSize; i++)
free(_screenActs[i]);
free(_screenActs);
_screenActs = nullptr;
_screenActsSize = 0;
}
if (_actListArr) {
@ -633,6 +649,8 @@ void Scheduler::freeScheduler() {
free(_actListArr[i]);
}
free(_actListArr);
_actListArr = nullptr;
_actListArrSize = 0;
}
}
@ -698,9 +716,9 @@ void Scheduler::saveEvents(Common::WriteStream *f) {
f->writeUint32BE(getTicks());
int16 freeIndex = (_freeEvent == 0) ? -1 : _freeEvent - _events;
int16 headIndex = (_headEvent == 0) ? -1 : _headEvent - _events;
int16 tailIndex = (_tailEvent == 0) ? -1 : _tailEvent - _events;
int16 freeIndex = (_freeEvent == nullptr) ? -1 : _freeEvent - _events;
int16 headIndex = (_headEvent == nullptr) ? -1 : _headEvent - _events;
int16 tailIndex = (_tailEvent == nullptr) ? -1 : _tailEvent - _events;
f->writeSint16BE(freeIndex);
f->writeSint16BE(headIndex);
@ -717,8 +735,8 @@ void Scheduler::saveEvents(Common::WriteStream *f) {
f->writeSint16BE(subElem);
f->writeByte((wrkEvent->_localActionFl) ? 1 : 0);
f->writeUint32BE(wrkEvent->_time);
f->writeSint16BE((wrkEvent->_prevEvent == 0) ? -1 : (wrkEvent->_prevEvent - _events));
f->writeSint16BE((wrkEvent->_nextEvent == 0) ? -1 : (wrkEvent->_nextEvent - _events));
f->writeSint16BE((wrkEvent->_prevEvent == nullptr) ? -1 : (wrkEvent->_prevEvent - _events));
f->writeSint16BE((wrkEvent->_nextEvent == nullptr) ? -1 : (wrkEvent->_nextEvent - _events));
}
}
@ -1102,7 +1120,7 @@ void Scheduler::restoreEvents(Common::ReadStream *f) {
// fix up action pointer (to do better)
if ((index == -1) && (subElem == -1))
_events[i]._action = 0;
_events[i]._action = nullptr;
else
_events[i]._action = (Act *)&_actListArr[index][subElem];
@ -1112,12 +1130,12 @@ void Scheduler::restoreEvents(Common::ReadStream *f) {
int16 prevIndex = f->readSint16BE();
int16 nextIndex = f->readSint16BE();
_events[i]._prevEvent = (prevIndex == -1) ? (Event *)0 : &_events[prevIndex];
_events[i]._nextEvent = (nextIndex == -1) ? (Event *)0 : &_events[nextIndex];
_events[i]._prevEvent = (prevIndex == -1) ? nullptr : &_events[prevIndex];
_events[i]._nextEvent = (nextIndex == -1) ? nullptr : &_events[nextIndex];
}
_freeEvent = (freeIndex == -1) ? 0 : &_events[freeIndex];
_headEvent = (headIndex == -1) ? 0 : &_events[headIndex];
_tailEvent = (tailIndex == -1) ? 0 : &_events[tailIndex];
_freeEvent = (freeIndex == -1) ? nullptr : &_events[freeIndex];
_headEvent = (headIndex == -1) ? nullptr : &_events[headIndex];
_tailEvent = (tailIndex == -1) ? nullptr : &_events[tailIndex];
// Adjust times to fit our time
uint32 curTime = getTicks();
@ -1156,7 +1174,7 @@ void Scheduler::insertAction(Act *action) {
// Now find the place to insert the event
if (!_tailEvent) { // Empty queue
_tailEvent = _headEvent = curEvent;
curEvent->_nextEvent = curEvent->_prevEvent = 0;
curEvent->_nextEvent = curEvent->_prevEvent = nullptr;
} else {
Event *wrkEvent = _tailEvent; // Search from latest time back
bool found = false;
@ -1178,7 +1196,7 @@ void Scheduler::insertAction(Act *action) {
if (!found) { // Must be earliest in list
_headEvent->_prevEvent = curEvent; // So insert as new head
curEvent->_nextEvent = _headEvent;
curEvent->_prevEvent = 0;
curEvent->_prevEvent = nullptr;
_headEvent = curEvent;
}
}
@ -1424,7 +1442,7 @@ Event *Scheduler::doAction(Event *curEvent) {
}
if (action->_a0._actType == NEW_SCREEN) { // New_screen() deletes entire list
return 0; // nextEvent = 0 since list now empty
return nullptr; // nextEvent = nullptr since list now empty
} else {
wrkEvent = curEvent->_nextEvent;
delQueue(curEvent); // Return event to free list
@ -1455,9 +1473,9 @@ void Scheduler::delQueue(Event *curEvent) {
}
if (_headEvent)
_headEvent->_prevEvent = 0; // Mark end of list
_headEvent->_prevEvent = nullptr; // Mark end of list
else
_tailEvent = 0; // Empty queue
_tailEvent = nullptr; // Empty queue
curEvent->_nextEvent = _freeEvent; // Return p to free list
if (_freeEvent) // Special case, if free list was empty

View File

@ -123,11 +123,12 @@ SoundHandler::SoundHandler(HugoEngine *vm) : _vm(vm) {
_speakerStream = new Audio::PCSpeaker(_vm->_mixer->getOutputRate());
_vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_speakerHandle,
_speakerStream, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true);
_DOSSongPtr = 0;
_DOSSongPtr = nullptr;
_curPriority = 0;
_pcspkrTimer = 0;
_pcspkrOctave = 3;
_pcspkrNoteDuration = 2;
_DOSIntroSong = nullptr;
}
SoundHandler::~SoundHandler() {
@ -210,7 +211,7 @@ void SoundHandler::playSound(int16 sound, const byte priority) {
_curPriority = priority;
// Get sound data
if ((soundPtr = _vm->_file->getSound(sound, &size)) == 0)
if ((soundPtr = _vm->_file->getSound(sound, &size)) == nullptr)
return;
Audio::AudioStream *stream = Audio::makeRawStream(soundPtr, size, 11025, Audio::FLAG_UNSIGNED);

View File

@ -26,9 +26,17 @@
namespace Hugo {
TextHandler::TextHandler(HugoEngine *vm) : _vm(vm), _textData(0), _stringtData(0),
_textEngine(0), _textIntro(0), _textMouse(0), _textParser(0), _textUtil(0),
_screenNames(0), _arrayNouns(0), _arrayVerbs(0) {
TextHandler::TextHandler(HugoEngine *vm) : _vm(vm) {
_textData = nullptr;
_stringtData = nullptr;
_textEngine = nullptr;
_textIntro = nullptr;
_textMouse = nullptr;
_textParser = nullptr;
_textUtil = nullptr;
_screenNames = nullptr;
_arrayNouns = nullptr;
_arrayVerbs = nullptr;
}
TextHandler::~TextHandler() {
@ -86,9 +94,9 @@ char **TextHandler::loadTextsVariante(Common::ReadStream &in, uint16 *arraySize)
int numTexts;
int entryLen;
int len;
char **res = 0;
char *pos = 0;
char *posBck = 0;
char **res = nullptr;
char *pos = nullptr;
char *posBck = nullptr;
for (int varnt = 0; varnt < _vm->_numVariant; varnt++) {
numTexts = in.readUint16BE();
@ -126,21 +134,21 @@ char **TextHandler::loadTextsVariante(Common::ReadStream &in, uint16 *arraySize)
}
char ***TextHandler::loadTextsArray(Common::ReadStream &in) {
char ***resArray = 0;
char ***resArray = nullptr;
uint16 arraySize;
for (int varnt = 0; varnt < _vm->_numVariant; varnt++) {
arraySize = in.readUint16BE();
if (varnt == _vm->_gameVariant) {
resArray = (char ***)malloc(sizeof(char **) * (arraySize + 1));
resArray[arraySize] = 0;
resArray[arraySize] = nullptr;
}
for (int i = 0; i < arraySize; i++) {
int numTexts = in.readUint16BE();
int entryLen = in.readUint16BE();
char *pos = (char *)malloc(entryLen);
char *posBck = 0;
char **res = 0;
char *posBck = nullptr;
char **res = nullptr;
if (varnt == _vm->_gameVariant) {
res = (char **)malloc(sizeof(char *) * numTexts);
res[0] = pos;
@ -232,6 +240,7 @@ void TextHandler::freeTexts(char **ptr) {
free(*ptr - DATAALIGNMENT);
free(ptr);
ptr = nullptr;
}
void TextHandler::freeAllTexts() {
@ -242,12 +251,14 @@ void TextHandler::freeAllTexts() {
for (int i = 0; _arrayNouns[i]; i++)
freeTexts(_arrayNouns[i]);
free(_arrayNouns);
_arrayNouns = nullptr;
}
if (_arrayVerbs) {
for (int i = 0; _arrayVerbs[i]; i++)
freeTexts(_arrayVerbs[i]);
free(_arrayVerbs);
_arrayVerbs = nullptr;
}
freeTexts(_screenNames);