@@ -107,27 +107,19 @@ def deserialize(self, input):
107107 # The internal record does not have a length field in it,
108108 # and it is just a byte array. So we have to find the start
109109 # of the next record and slice the input on that boundary.
110- end_of_internal = 0 ;
111- internal_use_offset = 0
112- offset_list = []
113- for k , v in self .header .to_dict ().items ():
114- if v and k == 'internal_use_offs' :
115- internal_use_offset = v
116- offset_list .append (v )
117- offset_list .sort ()
118-
119- if internal_use_offset != 0 :
120- index = offset_list .index (internal_use_offset )
121- # Check it isn't the last on the list
122- if index != len (offset_list ) - 1 :
123- end_of_internal = offset_list [index + 1 ]
110+ offsets = self .header .to_dict ()
111+ if "internal_use_offs" in offsets :
112+ internal_use_start = offsets ["internal_use_offs" ]
113+ internal_use_end = next (
114+ (o for o in sorted (offsets .values ()) if o > internal_use_start ), None
115+ )
124116
125117 for k , v in self .header .to_dict ().items ():
126118 if v :
127119 obj_name = self ._area_table_lookup .inverse [k ]
128120 obj = self .factory (obj_name )
129- if k == ' internal_use_offs' and end_of_internal != 0 :
130- obj .deserialize (input [v :end_of_internal ])
121+ if k == " internal_use_offs" and internal_use_end is not None :
122+ obj .deserialize (input [v :internal_use_end ])
131123 else :
132124 obj .deserialize (input [v :])
133125 self .areas [obj_name ] = obj
0 commit comments