aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorJim Blandy1993-02-22 16:21:17 +0000
committerJim Blandy1993-02-22 16:21:17 +0000
commitfe90ad97661b86fac9c360272330008b16f3054e (patch)
tree9f694bc6fa1ca74050d4155faae0ede2092b0fda /src/alloc.c
parentb10fd412fcb92bd9c5e7d610430863a68d9e0494 (diff)
downloademacs-fe90ad97661b86fac9c360272330008b16f3054e.tar.gz
emacs-fe90ad97661b86fac9c360272330008b16f3054e.zip
* alloc.c (make_pure_float): Align pureptr according to __alignof,
if it's available, or sizeof (struct Lisp_Float) if it's not.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 63463dbbc7f..f3010dbac5d 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -991,12 +991,22 @@ make_pure_float (num)
991 double num; 991 double num;
992{ 992{
993 register Lisp_Object new; 993 register Lisp_Object new;
994 int alignment;
994 995
995 /* Make sure that pureptr is aligned on at least a sizeof (double) 996 /* Make sure that pureptr is aligned on at least a sizeof (double)
996 boundary. Some architectures (like the sparc) require this, and 997 boundary. Some architectures (like the sparc) require this, and
997 I suspect that floats are rare enough that it's no tragedy for 998 I suspect that floats are rare enough that it's no tragedy for
998 those that do. */ 999 those that do. */
999 pureptr = (pureptr + sizeof (num) - 1) & - sizeof (num); 1000#ifdef __GNUC__
1001#if __GNUC__ >= 2
1002 alignment = __alignof (struct Lisp_Float);
1003#else
1004 alignment = sizeof (struct Lisp_Float);
1005#endif
1006#else
1007 alignment = sizeof (struct Lisp_Float);
1008#endif
1009 pureptr = (pureptr + alignment - 1) & - alignment;
1000 1010
1001 if (pureptr + sizeof (struct Lisp_Float) > PURESIZE) 1011 if (pureptr + sizeof (struct Lisp_Float) > PURESIZE)
1002 error ("Pure Lisp storage exhausted"); 1012 error ("Pure Lisp storage exhausted");