@@ -882,6 +882,8 @@ def _parse_record_line(record_line):
882882
883883 # Read string fields from record line
884884 match = _rx_record .match (record_line )
885+ if match is None :
886+ raise HeaderSyntaxError ('invalid syntax in record line' )
885887 (record_fields ['record_name' ], record_fields ['n_seg' ],
886888 record_fields ['n_sig' ], record_fields ['fs' ],
887889 record_fields ['counter_freq' ], record_fields ['base_counter' ],
@@ -946,6 +948,8 @@ def _parse_signal_lines(signal_lines):
946948 # Read string fields from signal line
947949 for ch in range (n_sig ):
948950 match = _rx_signal .match (signal_lines [ch ])
951+ if match is None :
952+ raise HeaderSyntaxError ('invalid syntax in signal line' )
949953 (signal_fields ['file_name' ][ch ], signal_fields ['fmt' ][ch ],
950954 signal_fields ['samps_per_frame' ][ch ], signal_fields ['skew' ][ch ],
951955 signal_fields ['byte_offset' ][ch ], signal_fields ['adc_gain' ][ch ],
@@ -1003,6 +1007,8 @@ def _read_segment_lines(segment_lines):
10031007 # Read string fields from signal line
10041008 for i in range (len (segment_lines )):
10051009 match = _rx_segment .match (segment_lines [i ])
1010+ if match is None :
1011+ raise HeaderSyntaxError ('invalid syntax in segment line' )
10061012 (segment_fields ['seg_name' ][i ],
10071013 segment_fields ['seg_len' ][i ]) = match .groups ()
10081014
@@ -1013,6 +1019,10 @@ def _read_segment_lines(segment_lines):
10131019 return segment_fields
10141020
10151021
1022+ class HeaderSyntaxError (ValueError ):
1023+ """Invalid syntax found in a WFDB header file."""
1024+
1025+
10161026def lines_to_file (file_name , write_dir , lines ):
10171027 """
10181028 Write each line in a list of strings to a text file.
0 commit comments