GNU bug report logs - #78184
30.0.93; ansi-osc-apply-on-region should use end marker

Previous Next

Package: emacs;

Reported by: Troy Brown <brownts <at> troybrown.dev>

Date: Thu, 1 May 2025 11:49:01 UTC

Severity: normal

Found in version 30.0.93

Done: Eli Zaretskii <eliz <at> gnu.org>

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Troy Brown <brownts <at> troybrown.dev>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.93; ansi-osc-apply-on-region should use end marker
Date: Thu, 1 May 2025 07:47:56 -0400
I've been running into an issue when using the ANSI OSC compilation
filters, where part way through parsing input, I'll get an "args out
of range" error on the call to `put-text-property`.  I believe this is
because `ansi-osc-apply-on-region` uses `delete-region` and therefore
the buffer can shrink from its original size.  Due to this shrinking,
the use of "end", in the call to `put-text-property` can reside
outside the current bounds of the buffer, causing the error.

Looking at similar functionality in `ansi-color-apply-on-region`, I
noticed that it creates a marker for "end" at the beginning of the
function, avoiding this problem.  I believe the ANSI OSC package
should use a similar approach and create a marker for "end".  It's
also likely that a marker should be used in other functions within the
package, such as `ansi-osc-filter-region`, although
`re-search-forward` doesn't seem to be susceptible to the range issue
that `put-text-property` is.

Currently, I use the following advice to workaround the problem by
ensuring that "end" is a marker before calling the original function:

```emacs
(defun init.el/advice/ansi-osc-apply-on-region (oldfun &rest r)
  (let ((start (car r))
        (end (cadr r)))
    (funcall oldfun start (copy-marker end))))
(advice-add 'ansi-osc-apply-on-region :around
#'init.el/advice/ansi-osc-apply-on-region)
```




This bug report was last modified 17 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.