Skip to content

Commit 0ede245

Browse files
committed
fix for merging ret alias
1 parent d9912b6 commit 0ede245

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

rapx/src/analysis/core/alias/mop/alias.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,12 @@ impl<'tcx> MopGraph<'tcx> {
281281
&& idx != node.index
282282
&& node.local != results_nodes[idx].local
283283
{
284-
let left_node = node;
285-
let right_node = &results_nodes[idx];
284+
let left_node;
285+
let right_node;
286+
match results_nodes[idx].local {
287+
0 => { left_node = &results_nodes[idx]; right_node = node; },
288+
_ => { left_node = node; right_node = &results_nodes[idx]; }
289+
}
286290
let mut new_alias = RetAlias::new(
287291
left_node.local,
288292
left_node.may_drop,

rapx/src/analysis/safedrop/alias.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ impl<'tcx> SafeDropGraph<'tcx> {
192192
// } else {
193193
// self.values[lv].alias = self.values[rv].alias.clone();
194194
// }
195+
if lv > self.values.len() || rv > self.values.len() { return; }
195196
self.union_merge(lv, rv);
196-
197197
for field in self.values[rv].fields.clone().into_iter() {
198198
if !self.values[lv].fields.contains_key(&field.0) {
199199
let mut node = ValueNode::new(

0 commit comments

Comments
 (0)