> Oh, I think I see: with the current code, the mark-ring gets copies of > markers and those copies are made "late", so if you do "C-SPC, some > deletion around point, and then C-SPC", a new marker for the first C-SPC > is pushed on the mark-ring, but the undo-log has an adjustment for > mark-marker rather than for that new marker. > IOW, I think the primitive-undo fix is needed and your fix is also > needed. Yes that's right. Parents cover their childrens' eyes at the violence of our agreement. I just discovered my patch has a bug. If I C-SPC first thing after starting Emacs, an error is signaled because the mark is nil. I had hoped the mark variable initialized equivalently except to make itself available to Lisp. There are clearly holes in my understanding of the initialization business. I'll debug that at a later time.