[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31981: Fix 'flymake-proc-legacy-flymake' temporary file deletion bug
From: |
Noam Postavsky |
Subject: |
bug#31981: Fix 'flymake-proc-legacy-flymake' temporary file deletion bug |
Date: |
Tue, 27 Aug 2019 19:37:56 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2.90 (gnu/linux) |
Joel Rosdahl <joel@rosdahl.net> writes:
> 1. The user modifies the buffer, making flymake-proc start a process A
> which reads from a temporary file T containing the buffer content.
> 2. Before process A has finished, the user modifies the buffer again,
> making flymake-proc start a new process B reading from the same
> temporary file T.
If I'm reading flymake-proc-init-create-temp-buffer-copy correctly, it
actually makes a new temporary file (say T1), but the file name is
stored in a single variable, so Emacs effectively forgets about the
original file T.
> 3. A is marked as obsolete.
> 4. When A's sentinel detects that A has died, it runs A's cleanup
> function which deletes T.
So here it deletes T1, leaving the original T. And then B will fail,
since it needs T1, not T.
> But I see no other quick fix for the issue since the name of the
> temporary file is kept in a single buffer-local variable and there is
> no way for the cleanup function to know that it's being called for an
> obsolete process.
Would it work to store the filename in the process object instead, with
process-put (and then the sentinel can retreive it with process-get)?