Commit 8d588f09 authored by Joel Rosdahl's avatar Joel Rosdahl Committed by Noam Postavsky

Fix flymake-proc temporary file deletion bug

* list/progmodes/flymake-proc.el (flymake-proc-create-temp-inplace):
Include a time string part (hour + minute + second + nanosecond) in
the temporary name to make it unique enough.
(flymake-proc-legacy-flymake): Store temporary file names in the
process for usage in the sentinel.
(flymake-proc--process-sentinel): Bind values of temporary file names
dynamically to values stored in the process so that the cleanup
function will delete the correct temporary file(s).

Fixes bug#31981.
parent 14875443
......@@ -654,7 +654,14 @@ Create parent directories as needed."
(let ((cleanup-f (flymake-proc--get-cleanup-function
(flymake-log 3 "cleaning up using %s" cleanup-f)
(funcall cleanup-f))))
;; Make cleanup-f see the temporary file names
;; created by its corresponding init function
;; (bug#31981).
(let ((flymake-proc--temp-source-file-name
(process-get proc 'flymake-proc--temp-source-file-name))
(process-get proc 'flymake-proc--temp-master-file-name)))
(funcall cleanup-f)))))
(kill-buffer output-buffer)))))))
(defun flymake-proc--panic (problem explanation)
......@@ -824,6 +831,10 @@ can also be executed interactively independently of
(process-put proc 'flymake-proc--output-buffer
(format " *flymake output for %s*" (current-buffer))))
(process-put proc 'flymake-proc--temp-source-file-name
(process-put proc 'flymake-proc--temp-master-file-name
(setq flymake-proc--current-process proc)
(flymake-log 2 "started process %d, command=%s, dir=%s"
(process-id proc) (process-command proc)
......@@ -865,6 +876,7 @@ can also be executed interactively independently of
(let* ((ext (file-name-extension file-name))
(temp-name (file-truename
(concat (file-name-sans-extension file-name)
"_" (format-time-string "%H%M%S%N")
"_" prefix
(and ext (concat "." ext))))))
(flymake-log 3 "create-temp-inplace: file=%s temp=%s" file-name temp-name)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment