summaryrefslogtreecommitdiff
path: root/src/insdel.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1999-02-18 05:40:34 +0000
committerRichard M. Stallman <rms@gnu.org>1999-02-18 05:40:34 +0000
commitc8a3c7eb277385a63813a356216d05087eb77f1c (patch)
treec5a81b53899763bd5d9c9fd7c09770701c1acf30 /src/insdel.c
parent3373a131dbf45da9ad119fd2bc9ea6522e7369c5 (diff)
downloademacs-c8a3c7eb277385a63813a356216d05087eb77f1c.tar.gz
(adjust_markers_for_replace): When doing an insertion
(replacing a region of zero length), handle markers at the insertion point properly.
Diffstat (limited to 'src/insdel.c')
-rw-r--r--src/insdel.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/insdel.c b/src/insdel.c
index 87f0a7898dc..f2aaa84a8b9 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -578,7 +578,12 @@ adjust_markers_for_replace (from, from_byte, old_chars, old_bytes,
{
register struct Lisp_Marker *m = XMARKER (marker);
- if (m->bytepos >= prev_to_byte)
+ if (m->bytepos >= prev_to_byte
+ && (old_bytes != 0
+ /* If this is an insertion (replacing 0 chars),
+ reject the case of a marker that is at the
+ insertion point and should stay before the insertion. */
+ || m->bytepos > from_byte || m->insertion_type))
{
if (m->bytepos < prev_to_byte + combined_after_bytes)
{