aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPaul Eggert2018-03-20 09:54:20 -0700
committerPaul Eggert2018-03-20 14:39:12 -0700
commitd09c488cb5f4cdf8d47b1e69f5fc7ac0750d7cbe (patch)
treef6c1d7d96cfd4d1dfb927100668104155ac8f031 /src/alloc.c
parent23527013c79607ba19536ccce85725a91b0033a5 (diff)
downloademacs-d09c488cb5f4cdf8d47b1e69f5fc7ac0750d7cbe.tar.gz
emacs-d09c488cb5f4cdf8d47b1e69f5fc7ac0750d7cbe.zip
Port to 32-bit sparc64
Backport from master. Problem reported by Ulrich Mueller; fix suggested by Eli Zaretskii and Andreas Schwab (Bug#30855). * src/alloc.c (mark_memory): Call mark_maybe_object only on pointers that are properly aligned for Lisp_Object.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 9d0e2d37e3c..c3f7920ed87 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4983,7 +4983,11 @@ mark_memory (void *start, void *end)
4983 for (pp = start; (void *) pp < end; pp += GC_POINTER_ALIGNMENT) 4983 for (pp = start; (void *) pp < end; pp += GC_POINTER_ALIGNMENT)
4984 { 4984 {
4985 mark_maybe_pointer (*(void **) pp); 4985 mark_maybe_pointer (*(void **) pp);
4986 mark_maybe_object (*(Lisp_Object *) pp); 4986
4987 verify (alignof (Lisp_Object) % GC_POINTER_ALIGNMENT == 0);
4988 if (alignof (Lisp_Object) == GC_POINTER_ALIGNMENT
4989 || (uintptr_t) pp % alignof (Lisp_Object) == 0)
4990 mark_maybe_object (*(Lisp_Object *) pp);
4987 } 4991 }
4988} 4992}
4989 4993