--- Begin Message ---
Subject: |
Referring to a marker changes Emacs' behaviour. |
Date: |
Mon, 31 Jan 2011 14:45:43 +0800 |
Hi,
I found an issue where evaluating this line or not causes Emacs behaviour change:
(format "%s" marked-point)
"marked-point" is a marker. The bug was found on NTEmacs 23.2.1, reproed on CVS NTEmacs 20110111, and Stephen Berman confirmed it on GNU Emacs 24.0.50.1
(i686-pc-linux-gnu, GTK+ Version 2.20.1) of 2011-01-13 on escher
"rebox2_bug.el" is attached to this message.
Repro-steps:
- emacs -Q rebox2_bug.el
- M-x eval-current-buffer
- C-x b<enter> ;; switch to "*scratch*"
- M-x rebox-mode
-
M-<
- SPC,SPC ;; space twice
- C-aC-aC-aC-a ;; notice that the point is stuck at 6
- C-xb<enter> ;; switch to "rebox2_bug.el
- M-g g 1714
- C-d ;; uncomment the hack workaround the bug
- C-M-x ;; reevaluated the function
-
C-x b<enter> ;; switch to "*scratch*"
- C-aC-aC-aC-a ;; notice that the cursor switches between 1 and 6
rebox2_bug.el
Description: Binary data
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#7946: Referring to a marker changes Emacs' behaviour. |
Date: |
Wed, 02 Feb 2011 10:54:56 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
> I found an issue where evaluating this line or not causes Emacs behaviour
> change:
> (format "%s" marked-point)
The patch below appears to fix the problem for me. I've installed it in
the emacs-23 branch.
The problem was that current-column uses a cache to try and speed up
some cases, and the cache was not flushed when exiting
a save-restriction. The workaround you used works because `set-buffer'
flushes the cache and `format' uses set-buffer internally.
Stefan
=== modified file 'src/editfns.c'
--- src/editfns.c 2011-01-02 23:50:46 +0000
+++ src/editfns.c 2011-02-02 15:45:27 +0000
@@ -3347,6 +3347,9 @@
}
}
+ /* Changing the buffer bounds invalidates any recorded current column. */
+ invalidate_current_column ();
+
if (cur)
set_buffer_internal (cur);
--- End Message ---