More fixes for issues reported by Coverity.

This commit is contained in:
Stephen Anthony 2018-03-30 10:51:56 -02:30
parent 93ba74ad44
commit 382a39a6c7
9 changed files with 65 additions and 49 deletions

View File

@ -420,7 +420,7 @@ string PhysicalJoystickHandler::getMappingDesc(Event::Type event, EventMode mode
case JoyHat::DOWN: buf << "/down"; break; case JoyHat::DOWN: buf << "/down"; break;
case JoyHat::LEFT: buf << "/left"; break; case JoyHat::LEFT: buf << "/left"; break;
case JoyHat::RIGHT: buf << "/right"; break; case JoyHat::RIGHT: buf << "/right"; break;
case JoyHat::CENTER: break; default: break;
} }
} }
} }

View File

@ -178,7 +178,7 @@ class RewindManager
// We do nothing on object instantiation or copy // We do nothing on object instantiation or copy
// The goal of LinkedObjectPool is to not do any allocations at all // The goal of LinkedObjectPool is to not do any allocations at all
RewindState() : cycles(0) { } RewindState() : cycles(0) { }
RewindState(const RewindState&) { } RewindState(const RewindState& rs) : cycles(rs.cycles) { }
// Output object info; used for debugging only // Output object info; used for debugging only
friend ostream& operator<<(ostream& os, const RewindState& s) { friend ostream& operator<<(ostream& os, const RewindState& s) {

View File

@ -125,19 +125,22 @@ int main(int argc, char* argv[])
} }
else else
{ {
const string& result = theOSystem->createConsole(romnode); try
if(result != EmptyString)
return Cleanup();
if(theOSystem->settings().getBool("takesnapshot"))
{ {
try { const string& result = theOSystem->createConsole(romnode);
theOSystem->logMessage("Taking snapshots with 'takesnapshot' ...", 2); if(result != EmptyString)
return Cleanup();
if(theOSystem->settings().getBool("takesnapshot"))
{
for(int i = 0; i < 30; ++i) theOSystem->frameBuffer().update(); for(int i = 0; i < 30; ++i) theOSystem->frameBuffer().update();
theOSystem->png().takeSnapshot(); theOSystem->png().takeSnapshot();
} catch(const runtime_error& e) { return Cleanup();
cout << e.what() << endl;
} }
}
catch(const runtime_error& e)
{
theOSystem->logMessage(e.what(), 0);
return Cleanup(); return Cleanup();
} }

View File

@ -735,7 +735,7 @@ string CartDebug::loadListFile()
getline(in, line); getline(in, line);
if(line.length() == 0 || line[0] == '-') if(!in.good() || line == "" || line[0] == '-')
continue; continue;
else // Search for constants else // Search for constants
{ {
@ -798,6 +798,7 @@ string CartDebug::loadSymbolFile()
int value = -1; int value = -1;
getline(in, label); getline(in, label);
if(!in.good()) continue;
stringstream buf(label); stringstream buf(label);
buf >> label >> hex >> value; buf >> label >> hex >> value;

View File

@ -64,11 +64,15 @@ void DrivingWidget::loadConfig()
if(myController.read(Controller::Two)) gray += 2; if(myController.read(Controller::Two)) gray += 2;
for(myGrayIndex = 0; myGrayIndex < 4; ++myGrayIndex) for(myGrayIndex = 0; myGrayIndex < 4; ++myGrayIndex)
{
if(ourGrayTable[myGrayIndex] == gray) if(ourGrayTable[myGrayIndex] == gray)
{
setValue(myGrayIndex);
break; break;
}
}
myFire->setState(!myController.read(Controller::Six)); myFire->setState(!myController.read(Controller::Six));
setValue();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -81,13 +85,13 @@ void DrivingWidget::handleCommand(
myGrayIndex = (myGrayIndex + 1) % 4; myGrayIndex = (myGrayIndex + 1) % 4;
myController.set(Controller::One, (ourGrayTable[myGrayIndex] & 0x1) != 0); myController.set(Controller::One, (ourGrayTable[myGrayIndex] & 0x1) != 0);
myController.set(Controller::Two, (ourGrayTable[myGrayIndex] & 0x2) != 0); myController.set(Controller::Two, (ourGrayTable[myGrayIndex] & 0x2) != 0);
setValue(); setValue(myGrayIndex);
break; break;
case kGrayDownCmd: case kGrayDownCmd:
myGrayIndex = myGrayIndex == 0 ? 3 : myGrayIndex - 1; myGrayIndex = myGrayIndex == 0 ? 3 : myGrayIndex - 1;
myController.set(Controller::One, (ourGrayTable[myGrayIndex] & 0x1) != 0); myController.set(Controller::One, (ourGrayTable[myGrayIndex] & 0x1) != 0);
myController.set(Controller::Two, (ourGrayTable[myGrayIndex] & 0x2) != 0); myController.set(Controller::Two, (ourGrayTable[myGrayIndex] & 0x2) != 0);
setValue(); setValue(myGrayIndex);
break; break;
case kFireCmd: case kFireCmd:
myController.set(Controller::Six, !myFire->getState()); myController.set(Controller::Six, !myFire->getState());
@ -96,9 +100,9 @@ void DrivingWidget::handleCommand(
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DrivingWidget::setValue() void DrivingWidget::setValue(int idx)
{ {
int grayCode = ourGrayTable[myGrayIndex]; int grayCode = ourGrayTable[idx];
// FIXME * 8 = a nasty hack, because the DataGridWidget does not support 2 digit binary output // FIXME * 8 = a nasty hack, because the DataGridWidget does not support 2 digit binary output
myGrayValue->setList(0, (grayCode & 0b01) + (grayCode & 0b10) * 8); myGrayValue->setList(0, (grayCode & 0b01) + (grayCode & 0b10) * 8);
} }

View File

@ -50,7 +50,7 @@ class DrivingWidget : public ControllerWidget
void loadConfig() override; void loadConfig() override;
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
void setValue(); void setValue(int idx);
// Following constructors and assignment operators not supported // Following constructors and assignment operators not supported
DrivingWidget() = delete; DrivingWidget() = delete;

View File

@ -127,7 +127,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
2*fontWidth, fontHeight, 2*fontWidth, fontHeight,
rowLabel[row], TextAlign::Left); rowLabel[row], TextAlign::Left);
for(uInt32 col = 0; col < 5 - row; ++col) for(uInt32 col = 0; col < 5 - row; ++col, ++idx)
{ {
myCollision[idx] = new CheckboxWidget(boss, lfont, collX, collY, "", CheckboxWidget::kCheckActionCmd); myCollision[idx] = new CheckboxWidget(boss, lfont, collX, collY, "", CheckboxWidget::kCheckActionCmd);
myCollision[idx]->setTarget(this); myCollision[idx]->setTarget(this);
@ -149,7 +149,6 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
colLabel[col], TextAlign::Left); colLabel[col], TextAlign::Left);
collX += myCollision[idx]->getWidth() + 10; collX += myCollision[idx]->getWidth() + 10;
idx++;
} }
collX = xpos + lwidth + 5; collX = xpos + lwidth + 5;
collY += lineHeight+3; collY += lineHeight+3;

View File

@ -719,35 +719,42 @@ void EventHandler::setComboMap()
replace(list.begin(), list.end(), ':', ' '); replace(list.begin(), list.end(), ':', ' ');
istringstream buf(list); istringstream buf(list);
// Get combo count, which should be the first int in the list // Erase the 'combo' array
// If it isn't, then we treat the entire list as invalid auto ERASE_ALL = [&]() {
string key;
buf >> key;
if(atoi(key.c_str()) == kComboSize)
{
// Fill the combomap table with events for as long as they exist
int combocount = 0;
while(buf >> key && combocount < kComboSize)
{
// Each event in a comboevent is separated by a comma
replace(key.begin(), key.end(), ',', ' ');
istringstream buf2(key);
int eventcount = 0;
while(buf2 >> key && eventcount < kEventsPerCombo)
{
myComboTable[combocount][eventcount] = Event::Type(atoi(key.c_str()));
++eventcount;
}
++combocount;
}
}
else
{
// Erase the 'combo' array
for(int i = 0; i < kComboSize; ++i) for(int i = 0; i < kComboSize; ++i)
for(int j = 0; j < kEventsPerCombo; ++j) for(int j = 0; j < kEventsPerCombo; ++j)
myComboTable[i][j] = Event::NoType; myComboTable[i][j] = Event::NoType;
};
// Get combo count, which should be the first int in the list
// If it isn't, then we treat the entire list as invalid
if(!buf.good())
ERASE_ALL();
else
{
string key;
buf >> key;
if(atoi(key.c_str()) == kComboSize)
{
// Fill the combomap table with events for as long as they exist
int combocount = 0;
while(buf >> key && combocount < kComboSize)
{
// Each event in a comboevent is separated by a comma
replace(key.begin(), key.end(), ',', ' ');
istringstream buf2(key);
int eventcount = 0;
while(buf2 >> key && eventcount < kEventsPerCombo)
{
myComboTable[combocount][eventcount] = Event::Type(atoi(key.c_str()));
++eventcount;
}
++combocount;
}
}
else
ERASE_ALL();
} }
saveComboMapping(); saveComboMapping();

View File

@ -166,11 +166,13 @@ void TIA::reset()
mySound.reset(); mySound.reset();
myDelayQueue.reset(); myDelayQueue.reset();
if (myFrameManager) myFrameManager->reset();
myCyclesAtFrameStart = 0; myCyclesAtFrameStart = 0;
frameReset(); // Recalculate the size of the display if (myFrameManager)
{
myFrameManager->reset();
frameReset(); // Recalculate the size of the display
}
// Must be done last, after all other items have reset // Must be done last, after all other items have reset
enableFixedColors(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.debugcolors" : "plr.debugcolors")); enableFixedColors(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.debugcolors" : "plr.debugcolors"));