diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2017-11-02 13:06:38 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2017-11-02 13:21:33 -0700 |
commit | 6b08ad5263bc063c79666ffe2bd5ed9ab77a00a0 (patch) | |
tree | c31fb8bdc9d639cc96982aa4718d74f4cc0e0397 /src/alloc.c | |
parent | a9f8706fa8fba5289e910fd55841b0952410d558 (diff) | |
download | emacs-6b08ad5263bc063c79666ffe2bd5ed9ab77a00a0.tar.gz |
Fix alignment portability problems
Do not assume that the natural alignment of Lisp objects is a
multiple of GCALIGNMENT. This improves on the portability of the
recent fix for Bug#29040.
* lib-src/make-docfile.c (close_emacs_globals):
* src/buffer.c (buffer_defaults, buffer_local_symbols):
* src/lisp.h (DEFUN):
* src/thread.c (main_thread):
Use GCALIGNED, not alignas (GCALIGNMENT).
* src/alloc.c (COMMON_MULTIPLE):
Move back here from lisp.h, since it is no longer used elsewhere.
* src/lisp.h (GCALIGNMENT): No longer a macro, since we need not
worry about MSVC. Omit no-longer-needed consistency check.
* src/thread.c (THREAD_ALIGNMENT): Remove.
Diffstat (limited to 'src/alloc.c')
-rw-r--r-- | src/alloc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c index ff93956109b..0fc79fe68ac 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -621,6 +621,12 @@ buffer_memory_full (ptrdiff_t nbytes) #endif } +/* A common multiple of the positive integers A and B. Ideally this + would be the least common multiple, but there's no way to do that + as a constant expression in C, so do the best that we can easily do. */ +#define COMMON_MULTIPLE(a, b) \ + ((a) % (b) == 0 ? (a) : (b) % (a) == 0 ? (b) : (a) * (b)) + #ifndef XMALLOC_OVERRUN_CHECK #define XMALLOC_OVERRUN_CHECK_OVERHEAD 0 #else |