[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