Fix encoded_size #defines for oneof messages.
The sizes are represented as EncodedSize() instances, which cause max() operation to sort them by address instead of value. This caused pretty much random item to be selected for the maximum. Update issue 141 Status: FixedInGit
This commit is contained in:
@@ -641,7 +641,17 @@ class OneOf(Field):
|
||||
return max([f.largest_field_value() for f in self.fields])
|
||||
|
||||
def encoded_size(self, allmsgs):
|
||||
return max([f.encoded_size(allmsgs) for f in self.fields])
|
||||
largest = EncodedSize(0)
|
||||
for f in self.fields:
|
||||
size = f.encoded_size(allmsgs)
|
||||
if size is None:
|
||||
return None
|
||||
elif size.symbols:
|
||||
return None # Cannot resolve maximum of symbols
|
||||
elif size.value > largest.value:
|
||||
largest = size
|
||||
|
||||
return largest
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Generation of messages (structures)
|
||||
|
||||
Reference in New Issue
Block a user