[Scummvm-git-logs] scummvm master -> 09b715379bef283d2a6a84dee8a12c17654d06f4

mduggan mgithub at guarana.org
Sun May 3 03:55:53 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
09b715379b ULTIMA8: Fix more coverity issues


Commit: 09b715379bef283d2a6a84dee8a12c17654d06f4
    https://github.com/scummvm/scummvm/commit/09b715379bef283d2a6a84dee8a12c17654d06f4
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-05-03T12:54:28+09:00

Commit Message:
ULTIMA8: Fix more coverity issues

Changed paths:
    engines/ultima/ultima8/usecode/uc_machine.cpp
    engines/ultima/ultima8/world/actors/animation_tracker.cpp
    engines/ultima/ultima8/world/actors/pathfinder.cpp


diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 0fda9da3f5..b65d6be2dc 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -1548,12 +1548,25 @@ void UCMachine::execProcess(UCProcess *p) {
 				break;
 			case 2: { // slist
 				UCList *l = new UCList(2);
-				l->copyStringList(*getList(ui16a));
+				const UCList *srclist = getList(ui16a);
+				if (!srclist) {
+					perr << "Warning: invalid src list passed to slist copy"
+						 << Std::endl;
+					ui16b = 0;
+					break;
+				}
+				l->copyStringList(*srclist);
 				ui16b = assignList(l);
 			}
 			break;
 			case 3: { // list
-				UCList *l = getList(ui16a);
+				const UCList *l = getList(ui16a);
+				if (!l) {
+					perr << "Warning: invalid src list passed to list copy"
+						 << Std::endl;
+					ui16b = 0;
+					break;
+				}
 				int elementsize = l->getElementSize();
 				UCList *l2 = new UCList(elementsize);
 				l2->copyList(*l);
@@ -2242,7 +2255,7 @@ void UCMachine::saveStrings(Common::WriteStream *ws) {
 	_stringIDs->save(ws);
 	ws->writeUint32LE(static_cast<uint32>(_stringHeap.size()));
 
-	Std::map<uint16, Std::string>::iterator iter;
+	Std::map<uint16, Std::string>::const_iterator iter;
 	for (iter = _stringHeap.begin(); iter != _stringHeap.end(); ++iter) {
 		ws->writeUint16LE((*iter)._key);
 		ws->writeUint32LE((*iter)._value.size());
@@ -2254,7 +2267,7 @@ void UCMachine::saveLists(Common::WriteStream *ws) {
 	_listIDs->save(ws);
 	ws->writeUint32LE(_listHeap.size());
 
-	Std::map<uint16, UCList *>::iterator iter;
+	Std::map<uint16, UCList *>::const_iterator iter;
 	for (iter = _listHeap.begin(); iter != _listHeap.end(); ++iter) {
 		ws->writeUint16LE((*iter)._key);
 		(*iter)._value->save(ws);
diff --git a/engines/ultima/ultima8/world/actors/animation_tracker.cpp b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
index 5dac4c0656..b3b0dc0afa 100644
--- a/engines/ultima/ultima8/world/actors/animation_tracker.cpp
+++ b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
@@ -49,7 +49,8 @@ AnimationTracker::AnimationTracker() : _firstFrame(true), _done(false),
 	_actor(0), _dir(0), _animAction(nullptr), _x(0), _y(0), _z(0),
 	_prevX(0), _prevY(0), _prevZ(0), _startX(0), _startY(0), _startZ(0),
 	_targetDx(0), _targetDy(0), _targetDz(0), _targetOffGroundLeft(0),
-	_firstStep(false), _shapeFrame(0), _currentFrame(0) {
+	_firstStep(false), _shapeFrame(0), _currentFrame(0), _startFrame(0),
+	_endFrame(0), _flipped(false) {
 }
 
 AnimationTracker::~AnimationTracker() {
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.cpp b/engines/ultima/ultima8/world/actors/pathfinder.cpp
index edfae3b357..472dcdea34 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder.cpp
@@ -90,6 +90,7 @@ bool PathfindingState::checkItem(const Item *item, int xyRange, int zRange) cons
 }
 
 bool PathfindingState::checkHit(Actor *_actor, const Actor *target) {
+	assert(target);
 #if 0
 	pout << "Trying hit in _direction " << _actor->getDirToItemCentre(*target) << Std::endl;
 #endif




More information about the Scummvm-git-logs mailing list