Skip to content

Commit 694354e

Browse files
committed
temp fix slot member_count
1 parent 55f04db commit 694354e

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

vm/src/builtins/descriptor.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,13 @@ fn set_slot_at_object(
320320
PySetterValue::Delete => obj.set_slot(offset, None),
321321
};
322322
}
323-
MemberKind::ObjectEx => match value {
324-
PySetterValue::Assign(v) => obj.set_slot(offset, Some(v)),
325-
PySetterValue::Delete => obj.set_slot(offset, None),
326-
},
323+
MemberKind::ObjectEx => {
324+
let value = match value {
325+
PySetterValue::Assign(v) => Some(v),
326+
PySetterValue::Delete => None,
327+
};
328+
obj.set_slot(offset, value);
329+
}
327330
}
328331

329332
Ok(())

vm/src/builtins/type.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -934,9 +934,14 @@ impl Constructor for PyType {
934934
None
935935
};
936936

937-
let base_member_count = base.slots.member_count;
938-
let member_count: usize =
939-
base.slots.member_count + heaptype_slots.as_ref().map(|x| x.len()).unwrap_or(0);
937+
// FIXME: this is a temporary fix. multi bases with multiple slots will break object
938+
let base_member_count = bases
939+
.iter()
940+
.map(|base| base.slots.member_count)
941+
.max()
942+
.unwrap();
943+
let heaptype_member_count = heaptype_slots.as_ref().map(|x| x.len()).unwrap_or(0);
944+
let member_count: usize = base_member_count + heaptype_member_count;
940945

941946
let flags = PyTypeFlags::heap_type_flags() | PyTypeFlags::HAS_DICT;
942947
let (slots, heaptype_ext) = {

0 commit comments

Comments
 (0)