emacs: Avoid infinite loop when marking up citations.

Thanks to Dirk Hohndel for reporting the bug. The infinite loop was first
noticed in the following message (available from the Linux kernel mailing list):

	alpine.LFD.2.00.0912081304070.3560@localhost.localdomain

Note that the bug does not show up when viewing the message in
isolation---the bug was triggered only when viewing this file indented
to a depth of at least 13.

The fix is simply to use a marker rather than an integer position when
recording a point we plan to move back to later, (since inserting the
indented button causes the buffer position of the desired marker to
change).
This commit is contained in:
Carl Worth 2009-12-11 15:25:55 -08:00
parent 0d340415c9
commit 8d2f19b896

View file

@ -608,7 +608,7 @@ which this thread was originally shown."
(invis-spec (make-symbol "notmuch-citation-region")))
(add-to-invisibility-spec invis-spec)
(overlay-put overlay 'invisible invis-spec)
(let ((p (point))
(let ((p (point-marker))
(cite-button-text
(concat "[" (number-to-string (count-lines beg-sub (point)))
"-line citation.]")))
@ -633,7 +633,7 @@ which this thread was originally shown."
(goto-char (- beg-sub 1))
(insert (concat "\n" indent))
(let ((sig-button-text (concat "[" (number-to-string sig-lines)
"-line signature.]")))
"-line signature. Click/Enter to show.]")))
(insert-button sig-button-text 'invisibility-spec invis-spec
:type 'notmuch-button-signature-toggle-type)
)