[Scummvm-git-logs] scummvm master -> 593fc3f4484c02a67402944c01c519e04b3b48d3

mduggan mgithub at guarana.org
Sat Mar 28 05:34:43 UTC 2020


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

Summary:
d90db0e467 ULTIMA8: Remove unneeded initializations identified by xcode
593fc3f448 ULTIMA8: Avoid use-after-free identified by clang


Commit: d90db0e467bdcd996fac368b5152da710b2caa6f
    https://github.com/scummvm/scummvm/commit/d90db0e467bdcd996fac368b5152da710b2caa6f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-03-28T14:33:24+09:00

Commit Message:
ULTIMA8: Remove unneeded initializations identified by xcode

Changed paths:
    engines/ultima/ultima8/gumps/container_gump.cpp
    engines/ultima/ultima8/gumps/item_relative_gump.cpp
    engines/ultima/ultima8/world/actors/main_actor.cpp
    engines/ultima/ultima8/world/item.cpp
    engines/ultima/ultima8/world/split_item_process.cpp


diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index 0cc9135537..2172fc24cd 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -505,7 +505,6 @@ void ContainerGump::DropItem(Item *item, int mx, int my) {
 
 			// combined, so delete item
 			item->destroy();
-			item = nullptr;
 			return;
 		}
 	}
diff --git a/engines/ultima/ultima8/gumps/item_relative_gump.cpp b/engines/ultima/ultima8/gumps/item_relative_gump.cpp
index 668f59a0c6..54465a0156 100644
--- a/engines/ultima/ultima8/gumps/item_relative_gump.cpp
+++ b/engines/ultima/ultima8/gumps/item_relative_gump.cpp
@@ -111,12 +111,9 @@ void ItemRelativeGump::GumpToParent(int32 &gx, int32 &gy, PointRoundDir r) {
 }
 
 void ItemRelativeGump::GetItemLocation(int32 lerp_factor) {
-	Item *it = nullptr;
-	Item *next = nullptr;
-	Item *prev = nullptr;
 	Gump *gump = nullptr;
 
-	it = getItem(_owner);
+	Item *it = getItem(_owner);
 
 	if (!it) {
 		// This shouldn't ever happen, the GumpNotifyProcess should
@@ -125,6 +122,8 @@ void ItemRelativeGump::GetItemLocation(int32 lerp_factor) {
 		return;
 	}
 
+	Item *next;
+	Item *prev;
 	while ((next = it->getParentAsContainer()) != nullptr) {
 		prev = it;
 		it = next;
diff --git a/engines/ultima/ultima8/world/actors/main_actor.cpp b/engines/ultima/ultima8/world/actors/main_actor.cpp
index 1e277fdbba..ff17bf2312 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.cpp
+++ b/engines/ultima/ultima8/world/actors/main_actor.cpp
@@ -61,7 +61,7 @@ MainActor::~MainActor() {
 }
 
 GravityProcess *MainActor::ensureGravityProcess() {
-	AvatarGravityProcess *p = nullptr;
+	AvatarGravityProcess *p;
 	if (_gravityPid) {
 		p = p_dynamic_cast<AvatarGravityProcess *>(
 		        Kernel::get_instance()->getProcess(_gravityPid));
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index 7c47a3368b..3616e37f54 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -1452,7 +1452,7 @@ int32 Item::ascend(int delta) {
 }
 
 GravityProcess *Item::ensureGravityProcess() {
-	GravityProcess *p = nullptr;
+	GravityProcess *p;
 	if (_gravityPid) {
 		p = p_dynamic_cast<GravityProcess *>(
 		        Kernel::get_instance()->getProcess(_gravityPid));
diff --git a/engines/ultima/ultima8/world/split_item_process.cpp b/engines/ultima/ultima8/world/split_item_process.cpp
index 72786adf30..6774ef6d97 100644
--- a/engines/ultima/ultima8/world/split_item_process.cpp
+++ b/engines/ultima/ultima8/world/split_item_process.cpp
@@ -75,7 +75,6 @@ void SplitItemProcess::run() {
 		targetitem->callUsecodeEvent_combine();
 	} else {
 		targetitem->destroy();
-		targetitem = nullptr;
 	}
 
 	if (origcount > 0) {
@@ -83,7 +82,6 @@ void SplitItemProcess::run() {
 		original->callUsecodeEvent_combine();
 	} else {
 		original->destroy(); // note: this terminates us
-		original = nullptr;
 	}
 
 	_result = 0;


Commit: 593fc3f4484c02a67402944c01c519e04b3b48d3
    https://github.com/scummvm/scummvm/commit/593fc3f4484c02a67402944c01c519e04b3b48d3
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-03-28T14:33:24+09:00

Commit Message:
ULTIMA8: Avoid use-after-free identified by clang

Changed paths:
    engines/ultima/ultima8/usecode/uc_machine.cpp


diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 3a074dcdc8..206be79772 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -1721,21 +1721,24 @@ void UCMachine::execProcess(UCProcess *p) {
 				perr << "Unhandled search type " << searchtype << Std::endl;
 				error = true;
 				delete[] script;
+				script = nullptr;
 				break;
 			}
 
-			p->_stack.push0(stacksize - scriptsize - 8); // filler
-			p->_stack.push(script, scriptsize);
-			p->_stack.push2(scriptsize);
-			p->_stack.push2(static_cast<uint16>(si16a));
-			p->_stack.push2(0);
-			uint16 itemlistID = assignList(itemlist);
-			p->_stack.push2(itemlistID);
+			if (script != nullptr) {
+				p->_stack.push0(stacksize - scriptsize - 8); // filler
+				p->_stack.push(script, scriptsize);
+				p->_stack.push2(scriptsize);
+				p->_stack.push2(static_cast<uint16>(si16a));
+				p->_stack.push2(0);
+				uint16 itemlistID = assignList(itemlist);
+				p->_stack.push2(itemlistID);
 
-			delete[] script;
+				delete[] script;
 
-			LOGPF(("loop\t\t%s %02X %02X\n", print_bp(si16a),
-			       scriptsize, searchtype));
+				LOGPF(("loop\t\t%s %02X %02X\n", print_bp(si16a),
+					   scriptsize, searchtype));
+			}
 		}
 		// Intentional fall-through
 




More information about the Scummvm-git-logs mailing list