Stop storing players as bare pointers - use unique_ptr instead

Should fix some potential memory leaks that were caught by static analysis
This commit is contained in:
2023-01-12 20:19:25 -05:00
parent 1a82f8ff8b
commit 8872f1aa25
12 changed files with 57 additions and 63 deletions

View File

@@ -2705,7 +2705,7 @@ void affect_spec(const runtime_state& ctx) {
for(auto& p : univ.stored_pcs) {
if(p.first == pc && p.second->unique_id == pc) {
can_pick = true;
found = p.second;
found = p.second.get();
break;
}
}
@@ -3174,7 +3174,7 @@ void affect_spec(const runtime_state& ctx) {
univ.party.stuff_done[spec.sd1][spec.sd2] = univ.party[pc_num].unique_id - 1000;
if(spec.ex1a == 1) break;
who->main_status += eMainStatus::SPLIT;
univ.stored_pcs[who->unique_id] = who->leave_party();
univ.stored_pcs[who->unique_id] = univ.party.remove_pc(pc_num);
univ.party.new_pc(pc_num);
}
break;
@@ -3191,7 +3191,7 @@ void affect_spec(const runtime_state& ctx) {
check_mess = false;
break;
}
univ.party.replace_pc(pc_num, univ.stored_pcs[spec.ex1a]);
univ.party.replace_pc(pc_num, std::move(univ.stored_pcs[spec.ex1a]));
ctx.cur_target = &univ.get_target(pc_num);
univ.party[pc_num].main_status -= eMainStatus::SPLIT;
univ.stored_pcs.erase(spec.ex1a);