summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog4
-rw-r--r--src/buffer.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b569a0d57e7..3caabe5792c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * buffer.c (clone_per_buffer_values): Skip `name'.
+
2008-06-11 Chong Yidong <cyd@stupidchicken.com>
* font.c (font_parse_fcname): Fix last change; accept decimal
diff --git a/src/buffer.c b/src/buffer.c
index bafcb020e8d..04786dcfa86 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -496,12 +496,16 @@ clone_per_buffer_values (from, to)
/* 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);
+ for (offset = PER_BUFFER_VAR_OFFSET (undo_list);
offset < sizeof *to;
offset += sizeof (Lisp_Object))
{
Lisp_Object obj;
+ /* Don't touch the `name' which should be unique for every buffer. */
+ if (offset == PER_BUFFER_VAR_OFFSET (name))
+ continue;
+
obj = PER_BUFFER_VALUE (from, offset);
if (MARKERP (obj))
{