X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fopaque.c;h=976ecd7471ad6cb0d5b3c37184437074da5e00f1;hp=a860cb12a43da1aec81cd05730dcf62d83a1ce31;hb=414b512c0774e67ba8e160b605447d862d3be166;hpb=716cfba952c1dc0d2cf5c968971f3780ba728a89 diff --git a/src/opaque.c b/src/opaque.c index a860cb1..976ecd7 100644 --- a/src/opaque.c +++ b/src/opaque.c @@ -44,7 +44,7 @@ Lisp_Object Vopaque_ptr_free_list; static void print_opaque (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { - CONST Lisp_Opaque *p = XOPAQUE (obj); + const Lisp_Opaque *p = XOPAQUE (obj); char buf[200]; sprintf (buf, "#", @@ -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) +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. @@ -64,10 +70,10 @@ sizeof_opaque (CONST void *header) If DATA is OPAQUE_UNINIT, the object's data is uninitialized. Else the object's data is initialized by copying from DATA. */ Lisp_Object -make_opaque (CONST void *data, size_t size) +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) @@ -121,10 +127,10 @@ DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("opaque", opaque, static void print_opaque_ptr (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { - CONST Lisp_Opaque_Ptr *p = XOPAQUE_PTR (obj); + const Lisp_Opaque_Ptr *p = XOPAQUE_PTR (obj); char buf[200]; - sprintf (buf, "#", + sprintf (buf, "#", (long)(p->ptr), (unsigned long) p); write_c_string (buf, printcharfun); } @@ -141,7 +147,7 @@ hash_opaque_ptr (Lisp_Object obj, int depth) return (unsigned long) XOPAQUE_PTR (obj)->ptr; } -DEFINE_LRECORD_IMPLEMENTATION ("opaque_ptr", opaque_ptr, +DEFINE_LRECORD_IMPLEMENTATION ("opaque-ptr", opaque_ptr, 0, print_opaque_ptr, 0, equal_opaque_ptr, hash_opaque_ptr, 0, Lisp_Opaque_Ptr); @@ -173,5 +179,8 @@ reinit_opaque_once_early (void) void init_opaque_once_early (void) { + INIT_LRECORD_IMPLEMENTATION (opaque); + INIT_LRECORD_IMPLEMENTATION (opaque_ptr); + reinit_opaque_once_early (); }