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)
&& 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;
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)));
}
}
/* 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)));
}
}
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;