[#66126] Creation/Conversion methods/functions table for Ruby types — SASADA Koichi <ko1@...>
Hi,
5 messages
2014/11/07
[#66248] [ruby-trunk - Feature #10423] [PATCH] opt_str_lit*: avoid literal string allocations — normalperson@...
Issue #10423 has been updated by Eric Wong.
3 messages
2014/11/13
[#66595] [ruby-trunk - Bug #10557] [Open] Block not given when the argument is a string — bartosz@...
Issue #10557 has been reported by Bartosz Kopinski.
3 messages
2014/11/30
[ruby-core:66256] [ruby-trunk - Bug #10504] [Assigned] Gracefully handle CSV IO file descriptor problems
From:
nobu@...
Date:
2014-11-13 09:51:47 UTC
List:
ruby-core #66256
Issue #10504 has been updated by Nobuyoshi Nakada.
Description updated
Status changed from Open to Assigned
Assignee set to James Gray
----------------------------------------
Bug #10504: Gracefully handle CSV IO file descriptor problems
https://bugs.ruby-lang.org/issues/10504#change-49935
* Author: Jack Danger
* Status: Assigned
* Priority: Normal
* Assignee: James Gray
* Category: lib
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0dev (2014-11-13 trunk 48392) [x86_64-darwin13]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
This patch allows `CSV.open` to more gracefully handle user error. Because the IO object is passed to the user-provided block it's entirely possible the IO object can be closed before the block finishes. This would raise an error in the `ensure` clause of `CSV.open`.
~~~diff
Index: lib/csv.rb
===================================================================
--- lib/csv.rb (revision 48392)
+++ lib/csv.rb (working copy)
@@ -1272,7 +1272,7 @@
begin
yield csv
ensure
- csv.close
+ csv.closed? || csv.close
end
else
csv
Index: test/csv/test_interface.rb
===================================================================
--- test/csv/test_interface.rb (revision 48392)
+++ test/csv/test_interface.rb (working copy)
@@ -136,6 +136,14 @@
end
end
+ def test_open_handles_prematurely_closed_file_descriptor_gracefully
+ assert_nothing_raised(Exception) do
+ CSV.open(@path) do |csv|
+ csv.close
+ end
+ end
+ end
+
### Test Write Interface ###
def test_generate
~~~
---Files--------------------------------
csv_handle_file_descriptor_gracefully.diff (783 Bytes)
--
https://bugs.ruby-lang.org/