X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fopaque.c;h=976ecd7471ad6cb0d5b3c37184437074da5e00f1;hp=2fb6dec47d77f7341abbe894935a9b38ee64f7e1;hb=414b512c0774e67ba8e160b605447d862d3be166;hpb=2fd9701a4f902054649dde9143a3f77809afee8f diff --git a/src/opaque.c b/src/opaque.c index 2fb6dec..976ecd7 100644 --- a/src/opaque.c +++ b/src/opaque.c @@ -52,11 +52,17 @@ print_opaque (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) 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 @@ Lisp_Object 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)