File tree Expand file tree Collapse file tree 2 files changed +15
-7
lines changed
Expand file tree Collapse file tree 2 files changed +15
-7
lines changed Original file line number Diff line number Diff 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 ( ( ) )
Original file line number Diff line number Diff 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) = {
You can’t perform that action at this time.
0 commit comments