]> git.eshelyaron.com Git - emacs.git/commitdiff
(clone_per_buffer_values, reset_buffer_local_variables)
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 11 Feb 2008 17:56:13 +0000 (17:56 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 11 Feb 2008 17:56:13 +0000 (17:56 +0000)
(Fbuffer_local_value, Fbuffer_local_variables): Don't forget undo_list.

src/ChangeLog
src/buffer.c

index 9b488a5c1d0c4f7a35727e8ff526af7b94d5f759..ee321261a1081a4c14526d454ea6ca4d2176479c 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffer.c (clone_per_buffer_values, reset_buffer_local_variables)
+       (Fbuffer_local_value, Fbuffer_local_variables): Don't forget undo_list.
+
 2008-02-11  Juanma Barranquero  <lekktu@gmail.com>
 
        * w32menu.c (push_submenu_start, push_submenu_end)
index d056ce7dc48037adc2dc4fb92bb1f8f799b393d3..c0162841c62a779f25879aeef9052eec831f8054 100644 (file)
@@ -496,7 +496,9 @@ clone_per_buffer_values (from, to)
 
   XSETBUFFER (to_buffer, to);
 
-  for (offset = PER_BUFFER_VAR_OFFSET (name) + sizeof (Lisp_Object);
+  /* buffer-local Lisp variables start at `undo_list',
+     tho only the ones from `name' on are GC'd normally.  */
+  for (offset = PER_BUFFER_VAR_OFFSET (undo_list) + sizeof (Lisp_Object);
        offset < sizeof *to;
        offset += sizeof (Lisp_Object))
     {
@@ -808,7 +810,9 @@ reset_buffer_local_variables (b, permanent_too)
   /* For each slot that has a default value,
      copy that into the slot.  */
 
-  for (offset = PER_BUFFER_VAR_OFFSET (name);
+  /* buffer-local Lisp variables start at `undo_list',
+     tho only the ones from `name' on are GC'd normally.  */
+  for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
        offset < sizeof *b;
        offset += sizeof (Lisp_Object))
     {
@@ -940,7 +944,9 @@ is the default binding of the variable. */)
       int found = 0;
 
       /* Look in special slots */
-      for (offset = PER_BUFFER_VAR_OFFSET (name);
+      /* buffer-local Lisp variables start at `undo_list',
+        tho only the ones from `name' on are GC'd normally.  */
+      for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
           offset < sizeof (struct buffer);
           /* sizeof EMACS_INT == sizeof Lisp_Object */
           offset += (sizeof (EMACS_INT)))
@@ -1051,7 +1057,9 @@ No argument or nil as argument means use current buffer as BUFFER.  */)
   {
     int offset, idx;
 
-    for (offset = PER_BUFFER_VAR_OFFSET (name);
+    /* buffer-local Lisp variables start at `undo_list',
+       tho only the ones from `name' on are GC'd normally.  */
+    for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
         offset < sizeof (struct buffer);
         /* sizeof EMACS_INT == sizeof Lisp_Object */
         offset += (sizeof (EMACS_INT)))