[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ruby-core
Subject:    [ruby-core:66585] [ruby-trunk - Bug #10364] Malformed CSV Header Causes NoMethodError
From:       jrodrigosm () yahoo ! es
Date:       2014-11-30 6:56:39
Message-ID: redmine.journal-50200.20141130065638.42febb19a19bf5ca () ruby-lang ! org
[Download RAW message or body]

Issue #10364 has been updated by Rodrigo Serrano.


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

----------------------------------------
Bug #10364: Malformed CSV Header Causes NoMethodError
https://bugs.ruby-lang.org/issues/10364#change-50200

* Author: Jon Israelson
* Status: Assigned
* Priority: Normal
* Assignee: James Gray
* Category: 
* Target version: 
* ruby -v: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
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.




-- 
https://bugs.ruby-lang.org/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic