]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix for undo recording in decode_coding.
authorGergely Risko <gergely@risko.hu>
Tue, 14 Aug 2012 05:09:35 +0000 (13:09 +0800)
committerChong Yidong <cyd@gnu.org>
Tue, 14 Aug 2012 05:09:35 +0000 (13:09 +0800)
* coding.c (decode_coding): Record buffer modification before
disabling undo_list.

Fixes: debbugs:11773
src/ChangeLog
src/coding.c

index 9cd76d2fc5f8b8b7c6764bab26bb8c07c797c8c7..e622d95bff811af95e16715b4b5692621fbd8f83 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-14  Gergely Risko  <gergely@risko.hu>
+
+       * coding.c (decode_coding): Record buffer modification before
+       disabling undo_list (Bug#11773).
+
 2012-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Revert and cleanup some recent overlay changes.
index 08633d8bcff03b1ad33194a55e019123ee5e0463..c601a18b26eed04cee7cb1d24613a7abb55d890e 100644 (file)
@@ -7102,6 +7102,15 @@ decode_coding (struct coding_system *coding)
        set_buffer_internal (XBUFFER (coding->dst_object));
       if (GPT != PT)
        move_gap_both (PT, PT_BYTE);
+
+      /* We must disable undo_list in order to record the whole insert
+        transaction via record_insert at the end.  But doing so also
+        disables the recording of the first change to the undo_list.
+        Therefore we check for first change here and record it via
+        record_first_change if needed.  */
+      if (MODIFF <= SAVE_MODIFF)
+       record_first_change ();
+
       undo_list = BVAR (current_buffer, undo_list);
       BSET (current_buffer, undo_list, Qt);
     }