Skip to content

Commit ee8361c

Browse files
committed
Address comments.
1 parent 6a8d0f7 commit ee8361c

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

luavm/src/lib/instructions/tables.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ pub fn get_attr(vm: &mut Vm, instr: u32) -> Result<(), LuaError> {
1010
let from = &vm.registers[arg2];
1111
let attr = &vm.registers[third_arg(instr) as usize];
1212
match attr.get_constant_index() {
13-
Some(i) if arg2 == ENV_REG => vm.env_attrs[i].clone(),
13+
Some(i) => {
14+
if arg2 == ENV_REG {
15+
vm.env_attrs[i].clone()
16+
} else {
17+
from.get_attr(attr)?
18+
}
19+
}
1420
_ => from.get_attr(attr)?,
1521
}
1622
};
@@ -24,7 +30,13 @@ pub fn set_attr(vm: &mut Vm, instr: u32) -> Result<(), LuaError> {
2430
let val = vm.registers[third_arg(instr) as usize].clone();
2531
let arg1 = first_arg(instr) as usize;
2632
match attr.get_constant_index() {
27-
Some(i) if arg1 == ENV_REG => vm.env_attrs[i] = val,
33+
Some(i) => {
34+
if arg1 == ENV_REG {
35+
vm.env_attrs[i] = val
36+
} else {
37+
vm.registers[arg1].set_attr(attr, val)?
38+
}
39+
}
2840
_ => vm.registers[arg1].set_attr(attr, val)?,
2941
}
3042
Ok(())

0 commit comments

Comments
 (0)