summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2022-10-21 15:01:10 +0900
committernagachika <nagachika@ruby-lang.org>2022-10-21 15:01:10 +0900
commit4388849ad3076ab0fe3586445cc1175a0358aba4 (patch)
treef1fed06ae475131ebd6fa200135e6e0320a8a3e1 /ext
parent0146681df8f064888038d51207cf520bdf74ac0d (diff)
merge revision(s) e5e6b87e265b95620821f7abac56b5ab90d4c1fd:
Create temporary file exclusively and clean --- ext/extmk.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
Diffstat (limited to 'ext')
-rwxr-xr-xext/extmk.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 1624ec9099..40fc10ea1c 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -66,12 +66,17 @@ end
def atomic_write_open(filename)
filename_new = filename + ".new.#$$"
- open(filename_new, "wb") do |f|
+ clean = false
+ File.open(filename_new, "wbx") do |f|
+ clean = true
yield f
end
if File.binread(filename_new) != (File.binread(filename) rescue nil)
File.rename(filename_new, filename)
- else
+ clean = false
+ end
+ensure
+ if clean
File.unlink(filename_new)
end
end