Fix stack capacity inheritance

This commit is contained in:
Rerumu 2022-07-05 16:44:05 -04:00
parent e58bae6d29
commit 6a8a8c1c00
2 changed files with 4 additions and 4 deletions

View File

@ -280,7 +280,7 @@ impl<'a> Factory<'a> {
} }
}; };
self.target.stack = old.stack.split_last(num_param); self.target.stack = old.stack.split_last(num_param, num_result);
old.stack.push_temporary(num_result); old.stack.push_temporary(num_result);

View File

@ -46,13 +46,13 @@ impl Stack {
self.var_list.len() self.var_list.len()
} }
pub fn split_last(&mut self, len: usize) -> Self { pub fn split_last(&mut self, num_param: usize, num_result: usize) -> Self {
let desired = self.len() - len; let desired = self.len() - num_param;
let var_list = self.var_list.split_off(desired); let var_list = self.var_list.split_off(desired);
Self { Self {
var_list, var_list,
capacity: self.capacity, capacity: self.capacity.max(desired + num_result),
previous: self.previous + desired, previous: self.previous + desired,
} }
} }