Hi, In chicken.h we find #define C_SIZEOF_FLONUM 3
But (whereas this may have been right in the past), in runtime.c:C_flonum(): #ifndef C_SIXTY_FOUR /* Align double on 8-byte boundary: */ if(aligned8(p)) ++p; #endif ..which is not included in the size of '3', and which means you'll allocate too few bytes with C_alloc() unless your flonums happen to always be aligned (or you're using a 64bit arch)... I discovered that one of my fns was taking 6 more slots than it should have, because, due to the size being 3, consecutive flonums are never 8-byte aligned, and so always take up an extra byte.. This may also be the answer to some of the ##sys#call-host/FFI problems I was having (I haven't done a comprehensive test yet). Now that I've changed my fn to use 6*(1+C_SIZEOF_FLONUM), I haven't had any more problems. cheers, Daniel _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users