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