Skip to content

Commit f677941

Browse files
committed
Don't unlink in finalizer when already unlinked
1 parent ea2dec6 commit f677941

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

lib/tempfile.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,8 @@ def unlink
330330
return
331331
end
332332

333+
@finalizer_manager.unlinked = true
334+
333335
@unlinked = true
334336
end
335337
alias delete unlink
@@ -366,10 +368,13 @@ def inspect
366368
attr_reader :unlinked, :mode, :opts, :finalizer_manager
367369

368370
class FinalizerManager # :nodoc:
371+
attr_accessor :unlinked
372+
369373
def initialize(path)
370374
@open_files = {}
371375
@path = path
372376
@pid = Process.pid
377+
@unlinked = false
373378
end
374379

375380
def register(obj, file)
@@ -381,7 +386,7 @@ def register(obj, file)
381386
def call(object_id)
382387
@open_files.delete(object_id).close
383388

384-
if @open_files.empty? && Process.pid == @pid
389+
if @open_files.empty? && !@unlinked && Process.pid == @pid
385390
$stderr.puts "removing #{@path}..." if $DEBUG
386391
begin
387392
File.unlink(@path)

0 commit comments

Comments
 (0)