X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fundo.c;h=f8d844e70357181234e37af079b29cd5a3d6a34e;hb=8b6b965da075da197b3d654db3405aa6846bd3d8;hp=6c12abf628f4dc96132690e3fbc3fa970900b79c;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910;p=chise%2Fxemacs-chise.git.1 diff --git a/src/undo.c b/src/undo.c index 6c12abf..f8d844e 100644 --- a/src/undo.c +++ b/src/undo.c @@ -46,7 +46,7 @@ Lisp_Object Qinhibit_read_only; which will be added to the list at the end of the command. This ensures we can't run out of space while trying to make an undo-boundary. */ -Lisp_Object pending_boundary; +static Lisp_Object pending_boundary; static void undo_boundary (struct buffer *b) @@ -75,7 +75,9 @@ undo_prelude (struct buffer *b, int hack_pending_boundary) if (EQ (b->undo_list, Qt)) return (0); - if (NILP (last_undo_buffer) || b != XBUFFER (last_undo_buffer)) + if (NILP (last_undo_buffer) + || (BUFFER_BASE_BUFFER (b) + != BUFFER_BASE_BUFFER (XBUFFER (last_undo_buffer)))) { undo_boundary (b); XSETBUFFER (last_undo_buffer, b); @@ -279,7 +281,7 @@ truncate_undo_list (Lisp_Object list, int minsize, int maxsize) && NILP (XCAR (next))) { /* Add in the space occupied by this element and its chain link. */ - size_so_far += sizeof (struct Lisp_Cons); + size_so_far += sizeof (Lisp_Cons); /* Advance to next element. */ prev = next; @@ -292,12 +294,12 @@ truncate_undo_list (Lisp_Object list, int minsize, int maxsize) elt = XCAR (next); /* Add in the space occupied by this element and its chain link. */ - size_so_far += sizeof (struct Lisp_Cons); + size_so_far += sizeof (Lisp_Cons); if (CONSP (elt)) { - size_so_far += sizeof (struct Lisp_Cons); + size_so_far += sizeof (Lisp_Cons); if (STRINGP (XCAR (elt))) - size_so_far += (sizeof (struct Lisp_String) - 1 + size_so_far += (sizeof (Lisp_String) - 1 + XSTRING_LENGTH (XCAR (elt))); } @@ -327,12 +329,12 @@ truncate_undo_list (Lisp_Object list, int minsize, int maxsize) } /* Add in the space occupied by this element and its chain link. */ - size_so_far += sizeof (struct Lisp_Cons); + size_so_far += sizeof (Lisp_Cons); if (CONSP (elt)) { - size_so_far += sizeof (struct Lisp_Cons); + size_so_far += sizeof (Lisp_Cons); if (STRINGP (XCAR (elt))) - size_so_far += (sizeof (struct Lisp_String) - 1 + size_so_far += (sizeof (Lisp_String) - 1 + XSTRING_LENGTH (XCAR (elt))); } @@ -545,9 +547,16 @@ syms_of_undo (void) } void -vars_of_undo (void) +reinit_vars_of_undo (void) { inside_undo = 0; +} + +void +vars_of_undo (void) +{ + reinit_vars_of_undo (); + pending_boundary = Qnil; staticpro (&pending_boundary); last_undo_buffer = Qnil;