diff --git a/fitparse/base.py b/fitparse/base.py index b0ebf87..5d3c6a2 100644 --- a/fitparse/base.py +++ b/fitparse/base.py @@ -296,7 +296,8 @@ def _parse_definition_message(self, header): if (field_size % base_type.size) != 0: warnings.warn( "Invalid field size %d for field '%s' of type '%s' (expected a multiple of %d); falling back to byte encoding." % ( - field_size, field.name, base_type.name, base_type.size) + field_size, field.name if field else 'unknown_%d' % field_def_num, + base_type.name, base_type.size) ) base_type = BASE_TYPE_BYTE diff --git a/tests/test.py b/tests/test.py index e4851d5..1677b88 100755 --- a/tests/test.py +++ b/tests/test.py @@ -2,6 +2,7 @@ import csv import datetime +import io import os from struct import pack import warnings @@ -74,6 +75,13 @@ def testfile(filename): class FitFileTestCase(unittest.TestCase): + def test_unknown_field_with_incompatible_size_warns(self): + definition = b'\x40\x00\x00' + pack('