forked from Rust-related/RustPython
temp fix slot member_count
This commit is contained in:
committed by
Jeong, YunWon
parent
55f04db6b8
commit
694354e5e6
@@ -320,10 +320,13 @@ fn set_slot_at_object(
|
||||
PySetterValue::Delete => obj.set_slot(offset, None),
|
||||
};
|
||||
}
|
||||
MemberKind::ObjectEx => match value {
|
||||
PySetterValue::Assign(v) => obj.set_slot(offset, Some(v)),
|
||||
PySetterValue::Delete => obj.set_slot(offset, None),
|
||||
},
|
||||
MemberKind::ObjectEx => {
|
||||
let value = match value {
|
||||
PySetterValue::Assign(v) => Some(v),
|
||||
PySetterValue::Delete => None,
|
||||
};
|
||||
obj.set_slot(offset, value);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
@@ -934,9 +934,14 @@ impl Constructor for PyType {
|
||||
None
|
||||
};
|
||||
|
||||
let base_member_count = base.slots.member_count;
|
||||
let member_count: usize =
|
||||
base.slots.member_count + heaptype_slots.as_ref().map(|x| x.len()).unwrap_or(0);
|
||||
// FIXME: this is a temporary fix. multi bases with multiple slots will break object
|
||||
let base_member_count = bases
|
||||
.iter()
|
||||
.map(|base| base.slots.member_count)
|
||||
.max()
|
||||
.unwrap();
|
||||
let heaptype_member_count = heaptype_slots.as_ref().map(|x| x.len()).unwrap_or(0);
|
||||
let member_count: usize = base_member_count + heaptype_member_count;
|
||||
|
||||
let flags = PyTypeFlags::heap_type_flags() | PyTypeFlags::HAS_DICT;
|
||||
let (slots, heaptype_ext) = {
|
||||
|
||||
Reference in New Issue
Block a user