From 6e2e34a5caa75a3430a1fb0d89900f9911c50436 Mon Sep 17 00:00:00 2001 From: Aaron Jensen Date: Sat, 30 Dec 2023 18:06:45 -0500 Subject: Avoid race condition in parallel native-compilation * lisp/emacs-lisp/comp.el (comp-delete-or-replace-file): Avoid race condition by relying on 'rename-file' being an atomic operation on Posix filesystems. (Bug#68083) --- lisp/emacs-lisp/comp.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lisp/emacs-lisp/comp.el') diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 3b2fd25e61c..f9eeef1b9e8 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -3339,9 +3339,9 @@ session." ;; Remove the old eln instead of copying the new one into it ;; to get a new inode and prevent crashes in case the old one ;; is currently loaded. - (t (delete-file oldfile) - (when newfile - (rename-file newfile oldfile))))) + (t (if newfile + (rename-file newfile oldfile t) + (delete-file oldfile))))) (defun comp--native-compile (function-or-file &optional with-late-load output) "Compile FUNCTION-OR-FILE into native code. -- cgit v1.2.3