diff src/opaque.c @ 456:e7ef97881643 r21-2-43

Import from CVS: tag r21-2-43
author cvs
date Mon, 13 Aug 2007 11:41:24 +0200
parents abe6d1db359e
children b39c14581166
line wrap: on
line diff
--- a/src/opaque.c	Mon Aug 13 11:40:56 2007 +0200
+++ b/src/opaque.c	Mon Aug 13 11:41:24 2007 +0200
@@ -52,11 +52,17 @@
   write_c_string (buf, printcharfun);
 }
 
+inline static size_t
+aligned_sizeof_opaque (size_t opaque_size)
+{
+  return ALIGN_SIZE (offsetof (Lisp_Opaque, data) + opaque_size,
+		     ALIGNOF (max_align_t));
+}
+
 static size_t
 sizeof_opaque (const void *header)
 {
-  const Lisp_Opaque *p = (const Lisp_Opaque *) header;
-  return offsetof (Lisp_Opaque, data) + p->size;
+  return aligned_sizeof_opaque (((const Lisp_Opaque *) header)->size);
 }
 
 /* Return an opaque object of size SIZE.
@@ -67,7 +73,7 @@
 make_opaque (const void *data, size_t size)
 {
   Lisp_Opaque *p = (Lisp_Opaque *)
-    alloc_lcrecord (offsetof (Lisp_Opaque, data) + size, &lrecord_opaque);
+    alloc_lcrecord (aligned_sizeof_opaque (size), &lrecord_opaque);
   p->size = size;
 
   if (data == OPAQUE_CLEAR)