diff options
-rw-r--r-- | src/ChangeLog | 4 | ||||
-rw-r--r-- | src/buffer.c | 6 |
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)) { |