diff options
Diffstat (limited to 'lib/tempfile.rb')
-rw-r--r-- | lib/tempfile.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/tempfile.rb b/lib/tempfile.rb index b13e5ff61f..cea229132a 100644 --- a/lib/tempfile.rb +++ b/lib/tempfile.rb @@ -111,8 +111,14 @@ class Tempfile < DelegateClass(File) # file. def unlink # keep this order for thread safeness - File.unlink(@tmpname) if File.exist?(@tmpname) - @@cleanlist.delete(@tmpname) if @@cleanlist + begin + File.unlink(@tmpname) if File.exist?(@tmpname) + @@cleanlist.delete(@tmpname) + @data = @tmpname = nil + ObjectSpace.undefine_finalizer(self) + rescue Errno::EACCESS + # may not be able to unlink on Windows; just ignore + end end alias delete unlink |