GNU bug report logs - #12077
Abort in replace-regexp with an after-change-functions hook

Previous Next

Package: emacs;

Reported by: Rob Browning <rlb <at> defaultvalue.org>

Date: Sat, 28 Jul 2012 18:01:02 UTC

Severity: normal

Fixed in version 24.4

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 12077 in the body.
You can then email your comments to 12077 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#12077; Package emacs. (Sat, 28 Jul 2012 18:01:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Rob Browning <rlb <at> defaultvalue.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 28 Jul 2012 18:01:02 GMT) Full text and rfc822 format available.

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

From: Rob Browning <rlb <at> defaultvalue.org>
To: bug-gnu-emacs <at> gnu.org
Cc: 682995-forwarded <at> bugs.debian.org,
	Christopher Wellons <mosquitopsu <at> gmail.com>, 682995 <at> bugs.debian.org
Subject: Abort in replace-regexp with an after-change-functions hook
Date: Sat, 28 Jul 2012 12:53:33 -0500
(If possible, please preserve the 682995-forwarded address in any replies.)

The following bug report was recently filed, and I've tried the example,
and saw the same abort.

You can find additional information here:

  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=682995


Christopher Wellons <mosquitopsu <at> gmail.com> writes:

> Package: emacs24
> Version: 24.1+1-4
> Severity: normal
>
> When this expression is evaluated, Emacs will abort.
>
>     (with-temp-buffer
>       (insert "#\n*\n")
>       (goto-char (point-min))
>       (add-hook 'after-change-functions
>                 (lambda (a b c) (re-search-forward "\n" nil t)))
>       (replace-regexp "^\\*" " *"))
>
> It is also provided in an attached file, example.el, in order to make
> this easier to demonstrate.
>
>     emacs -q -l example.el
>
> The abort() occurs in the check at the beginning of
> buf_charpos_to_bytepos() in marker.c, because the point has left the
> buffer bounds. I ran into this bug while trying to perform this
> replace-regexp while in a third-party markdown-mode, and narrowed it
> down to this combination of events.
>
> This bug also appears in emacs23 in both squeeze and sid as well as
> upstream and non-Debian builds of Emacs.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4




Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Tue, 19 Feb 2013 17:10:01 GMT) Full text and rfc822 format available.

Notification sent to Rob Browning <rlb <at> defaultvalue.org>:
bug acknowledged by developer. (Tue, 19 Feb 2013 17:10:01 GMT) Full text and rfc822 format available.

Message #10 received at 12077-done <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 12077-done <at> debbugs.gnu.org,
Subject: Re: bug#12077: Abort in replace-regexp with an after-change-functions
	hook
Date: Tue, 19 Feb 2013 12:08:34 -0500
Version: 24.4

Rob Browning wrote:

>> When this expression is evaluated, Emacs will abort.
>>
>>     (with-temp-buffer
>>       (insert "#\n*\n")
>>       (goto-char (point-min))
>>       (add-hook 'after-change-functions
>>                 (lambda (a b c) (re-search-forward "\n" nil t)))
>>       (replace-regexp "^\\*" " *"))

By experiment, this issue is present in at least 22.3 through 24.2.93,
but is fixed in the current trunk.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12077; Package emacs. (Tue, 19 Feb 2013 18:06:02 GMT) Full text and rfc822 format available.

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

From: Glenn Morris <rgm <at> gnu.org>
To: 12077 <at> debbugs.gnu.org
Subject: Re: bug#12077: Abort in replace-regexp with an after-change-functions
	hook
Date: Tue, 19 Feb 2013 13:04:50 -0500
Glenn Morris wrote:

>>>     (with-temp-buffer
>>>       (insert "#\n*\n")
>>>       (goto-char (point-min))
>>>       (add-hook 'after-change-functions
>>>                 (lambda (a b c) (re-search-forward "\n" nil t)))
>>>       (replace-regexp "^\\*" " *"))
>
> By experiment, this issue is present in at least 22.3 through 24.2.93,
> but is fixed in the current trunk.

PS if someone feels like checking exactly what fixed this, then if it is
a simple and obviously safe change, it could go in emacs-24. But since
this is a long-standing issue, this is not essential.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 20 Mar 2013 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 12 years and 152 days ago.

Previous Next


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