X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=src%2Fopaque.c;h=70459a5e71b0beb1da4950f34912042738cd5ddc;hb=56c8b099ccef8240d76c6f88c3f31d86ae22cfba;hp=1901c3aa8e9ecc6cb1a998657da1edccb9299b3d;hpb=6e00044928aea1f4f4002e72cf60de246c996f16;p=sxemacs diff --git a/src/opaque.c b/src/opaque.c index 1901c3a..70459a5 100644 --- a/src/opaque.c +++ b/src/opaque.c @@ -76,20 +76,25 @@ make_opaque(const void *data, size_t size) { Lisp_Opaque *p = (Lisp_Opaque *) alloc_lcrecord(aligned_sizeof_opaque(size), &lrecord_opaque); - p->size = size; - if (data == OPAQUE_CLEAR) - memset(p->data, '\0', size); - else if (data == OPAQUE_UNINIT) - DO_NOTHING; - else - memcpy(p->data, data, size); - - { - Lisp_Object val; - XSETOPAQUE(val, p); - return val; + assert(p!=NULL); + if(p != NULL) { + p->size = size; + + if (data == OPAQUE_CLEAR) + memset(p->data, '\0', size); + else if (data == OPAQUE_UNINIT) + DO_NOTHING; + else + memcpy(p->data, data, size); + + { + Lisp_Object val; + XSETOPAQUE(val, p); + return val; + } } + return Qnil; } /* This will not work correctly for opaques with subobjects! */ @@ -128,7 +133,7 @@ static void print_opaque_ptr(Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { const Lisp_Opaque_Ptr *p = XOPAQUE_PTR(obj); - + write_fmt_string(printcharfun, "#", p->ptr, p);