Subject: bug#73420: 30.0.90; Race condition in `ansi-osc-apply-on-region' with concurrent user input

From: Eli Zaretskii <[email-masked]>
Date: Sun, 22 Sep 2024 11:21:04 +0300

> From: Augusto Stoffel <[email-masked]>
> Date: Sun, 22 Sep 2024 09:37:55 +0200
> 
> In the current implementation of `ansi-osc-apply-on-region', the
> intention of the calls to `buffer-substring-no-properties' and
> `delete-region' is to get the payload of the OSC control sequence
> currently being parsed.
> 
> However, it is possible that the user typed some characters in the
> buffer while the OSC payload is arriving (and I have actually observed
> this happen if the payload is moderately large).  So
> `buffer-substring-no-properties' should be replaced with something that
> gets the buffer text in that range, but restricted to the portions that
> actually came from the subprocess.

Thanks.  Since you (together with Matthias) are the author of
ansi-osc.el, would you like to propose a solution for this?

> PS: Is there already a version of `filter-buffer-substring' anywhere in
> Emacs that filters based on the value of a given text property, or do
> people bake their own every time?

Looks like the latter, see backtrace--filter-visible, for example.