Berry fix possible memory corruption

This commit is contained in:
Stephan Hadinger 2021-10-24 10:23:36 +02:00
parent 2e87681612
commit 9fcd7c3ae4
1 changed files with 6 additions and 0 deletions

View File

@ -882,28 +882,34 @@ newframe: /* a new call frame */
binstance *obj = var_toobj(a);
bstring *attr = var_tostr(b);
if (!be_instance_setmember(vm, obj, attr, c)) {
reg = vm->reg;
vm_error(vm, "attribute_error",
"class '%s' cannot assign to attribute '%s'",
str(be_instance_name(obj)), str(attr));
}
reg = vm->reg;
dispatch();
}
if (var_isclass(a) && var_isstr(b)) {
bclass *obj = var_toobj(a);
bstring *attr = var_tostr(b);
if (!be_class_setmember(vm, obj, attr, c)) {
reg = vm->reg;
vm_error(vm, "attribute_error",
"class '%s' cannot assign to static attribute '%s'",
str(be_class_name(obj)), str(attr));
}
reg = vm->reg;
dispatch();
}
if (var_ismodule(a) && var_isstr(b)) {
bmodule *obj = var_toobj(a);
bstring *attr = var_tostr(b);
if (be_module_setmember(vm, obj, attr, c)) {
reg = vm->reg;
dispatch();
} else {
reg = vm->reg;
// fall through exception below
}
}