diff options
| author | Paul Eggert | 2011-07-06 14:53:56 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-07-06 14:53:56 -0700 |
| commit | 22b4128ef0160a0fab35a5d6dfc0f6a55c8bad93 (patch) | |
| tree | 77f5318c4497f9d95bac3532afc6500c3a01047c /src/buffer.c | |
| parent | e0457abee89abfe781a02de58ca6c35041e0e5d9 (diff) | |
| download | emacs-22b4128ef0160a0fab35a5d6dfc0f6a55c8bad93.tar.gz emacs-22b4128ef0160a0fab35a5d6dfc0f6a55c8bad93.zip | |
Remove unportable assumption about struct layout (Bug#8884).
* buffer.c (clone_per_buffer_values): Don't assume that
sizeof (struct buffer) is a multiple of sizeof (Lisp_Object).
This isn't true in general, and it's particularly not true
if Emacs is configured with --with-wide-int.
* buffer.h (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER):
New macros, used in the buffer.c change.
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/buffer.c b/src/buffer.c index 2339416eb36..6c7c2ec0d86 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -471,8 +471,8 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to) | |||
| 471 | 471 | ||
| 472 | /* buffer-local Lisp variables start at `undo_list', | 472 | /* buffer-local Lisp variables start at `undo_list', |
| 473 | tho only the ones from `name' on are GC'd normally. */ | 473 | tho only the ones from `name' on are GC'd normally. */ |
| 474 | for (offset = PER_BUFFER_VAR_OFFSET (undo_list); | 474 | for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER); |
| 475 | offset < sizeof *to; | 475 | offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER); |
| 476 | offset += sizeof (Lisp_Object)) | 476 | offset += sizeof (Lisp_Object)) |
| 477 | { | 477 | { |
| 478 | Lisp_Object obj; | 478 | Lisp_Object obj; |