Mercurial > hg > xemacs-beta
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)