Project

General

Profile

Actions

Bug #10364

closed

Malformed CSV Header Causes NoMethodError

Added by jisraelson (Jon Israelson) over 7 years ago. Updated about 4 years ago.

Status:
Rejected
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0]
[ruby-core:65597]

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.

Updated by hsbt (Hiroshi SHIBATA) over 7 years ago

  • Status changed from Open to Assigned
  • Assignee set to JEG2 (James Gray)

Updated by jrodrigosm (Rodrigo Serrano) over 7 years ago

This issue is also present in ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

Updated by mame (Yusuke Endoh) over 4 years ago

  • Assignee changed from JEG2 (James Gray) to kou (Kouhei Sutou)

@kou (Kouhei Sutou), could you check this ticket?

Updated by kou (Kouhei Sutou) about 4 years ago

  • Status changed from Assigned to Rejected

It seems that this has been fixed in master.
If someone knows a script that reproduces this case, you can attach the script and reopen this.

Actions

Also available in: Atom PDF