diff --git a/lib/csv.rb b/lib/csv.rb index b16e817d09..20c9f152a8 100644 --- a/lib/csv.rb +++ b/lib/csv.rb @@ -1291,7 +1291,7 @@ class CSV begin yield csv ensure - csv.close + csv.closed? || csv.close end else csv diff --git a/test/csv/test_interface.rb b/test/csv/test_interface.rb index f2c774f606..be27fcd616 100755 --- a/test/csv/test_interface.rb +++ b/test/csv/test_interface.rb @@ -137,6 +137,14 @@ class TestCSV::Interface < TestCSV 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