enami@ptgd.sony.co.jp (enami tsugutomo) (02/23/90)
Hello, In GNU Emacs 18.55.0 of Fri Feb 23 1990 on chihaya (berkeley-unix) Undo sometimes destroys own circluar queue and leaves garbage in buffer. For example, let's think following 2 functions (they are just a sample): (defun undo-bug-1 () "" (interactive) (insert (make-string 4100 ?a)) ) (defun undo-bug-2 () "" (interactive) (delete-region (point-min) (point-max)) (insert (make-string 4100 ?b)) ) First make an empty buffer and do M-x undo-bug-1 and M-x undo-bug-2. Then, do C-_ (undo). It seems undone correctly, but you probably find garbage at beginning of buffer. I think there is several way to fix this. For example, following patch will fix this problem with telling us an error. enami. *** /tmp/,RCSt1022610 Fri Feb 23 19:05:29 1990 --- undo.c Fri Feb 23 18:55:06 1990 *************** *** 328,333 **** --- 328,337 ---- chars = LastUndoneC; while (--n >= 0) { + #if defined(CHECK_NCharsLeft) + if (NCharsLeft < 0) + error ("Next undo information may be lost"); + #endif if (!i) i = u->num_undorecs; i--;