Merge from emacs-23; up to 2012-01-19T07:15:48Z!rgm@gnu.org.
[bpt/emacs.git] / src / undo.c
index 80aff50..4041a2a 100644 (file)
@@ -1,5 +1,5 @@
 /* undo handling for GNU Emacs.
-   Copyright (C) 1990, 1993-1994, 2000-2011  Free Software Foundation, Inc.
+   Copyright (C) 1990, 1993-1994, 2000-2012  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -212,7 +212,6 @@ record_change (EMACS_INT beg, EMACS_INT length)
 void
 record_first_change (void)
 {
-  Lisp_Object high, low;
   struct buffer *base_buffer = current_buffer;
 
   if (EQ (BVAR (current_buffer, undo_list), Qt))
@@ -225,9 +224,9 @@ record_first_change (void)
   if (base_buffer->base_buffer)
     base_buffer = base_buffer->base_buffer;
 
-  XSETFASTINT (high, (base_buffer->modtime >> 16) & 0xffff);
-  XSETFASTINT (low, base_buffer->modtime & 0xffff);
-  BVAR (current_buffer, undo_list) = Fcons (Fcons (Qt, Fcons (high, low)), BVAR (current_buffer, undo_list));
+  BVAR (current_buffer, undo_list) =
+    Fcons (Fcons (Qt, INTEGER_TO_CONS (base_buffer->modtime)),
+          BVAR (current_buffer, undo_list));
 }
 
 /* Record a change in property PROP (whose old value was VAL)
@@ -499,13 +498,9 @@ Return what remains of the list.  */)
              if (EQ (car, Qt))
                {
                  /* Element (t high . low) records previous modtime.  */
-                 Lisp_Object high, low;
-                 int mod_time;
                  struct buffer *base_buffer = current_buffer;
-
-                 high = Fcar (cdr);
-                 low = Fcdr (cdr);
-                 mod_time = (XFASTINT (high) << 16) + XFASTINT (low);
+                 time_t mod_time;
+                 CONS_TO_INTEGER (cdr, time_t, mod_time);
 
                  if (current_buffer->base_buffer)
                    base_buffer = current_buffer->base_buffer;
@@ -642,11 +637,8 @@ Return what remains of the list.  */)
 void
 syms_of_undo (void)
 {
-  Qinhibit_read_only = intern_c_string ("inhibit-read-only");
-  staticpro (&Qinhibit_read_only);
-
-  Qapply = intern_c_string ("apply");
-  staticpro (&Qapply);
+  DEFSYM (Qinhibit_read_only, "inhibit-read-only");
+  DEFSYM (Qapply, "apply");
 
   pending_boundary = Qnil;
   staticpro (&pending_boundary);