Actions
Bug #10364
closedMalformed CSV Header Causes NoMethodError
Description
The method CSV#readline raises a "NoMethodError: undefined method 'encode' for nil:NilClass" exception when the CSV file's header row contains a trailing delimiter (a comma in my case). The following CSV data can be used to recreate this error:
col1,col2,
1,2
3,4
The resulting stack trace:
csv.rb:993:in `block in <class:CSV>'
csv.rb:2175:in `[]'
csv.rb:2175:in `block (2 levels) in convert_fields'
csv.rb:2173:in `each'
csv.rb:2173:in `block in convert_fields'
csv.rb:2172:in `map'
csv.rb:2172:in `with_index'
csv.rb:2172:in `convert_fields'
csv.rb:2213:in `parse_headers'
csv.rb:1887:in `block in shift'
csv.rb:1779:in `loop'
csv.rb:1779:in `shift'
Assuming that the header row is considered malformed (IMHO it is), it seems that it would be better to raise a CSV::MalformedCSVError exception, which can be more easily handled.
Actions
Like0
Like0Like0Like0Like0