From 6d346bb61a2256515a969e4c4683dfa4a692c426 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 4 Dec 2011 22:45:03 +0100 Subject: [PATCH] ice-9/poll: verify sizeof(struct pollfd) * libguile/poll.c (scm_init_poll): Define %sizeof-struct-pollfd. * module/ice-9/poll.scm: Check %sizeof-struct-pollfd. --- libguile/poll.c | 1 + module/ice-9/poll.scm | 3 +++ 2 files changed, 4 insertions(+) diff --git a/libguile/poll.c b/libguile/poll.c index d61d51979..1bb75727b 100644 --- a/libguile/poll.c +++ b/libguile/poll.c @@ -184,6 +184,7 @@ scm_init_poll (void) { #if HAVE_POLL scm_c_define_gsubr ("primitive-poll", 4, 0, 0, scm_primitive_poll); + scm_c_define ("%sizeof-struct-pollfd", scm_from_size_t (sizeof (struct pollfd))); #else scm_misc_error ("%init-poll", "`poll' unavailable on this platform", SCM_EOL); #endif diff --git a/module/ice-9/poll.scm b/module/ice-9/poll.scm index cf61294d7..2ba868748 100644 --- a/module/ice-9/poll.scm +++ b/module/ice-9/poll.scm @@ -38,6 +38,9 @@ (load-extension (string-append "libguile-" (effective-version)) "scm_init_poll")) +(if (not (= %sizeof-struct-pollfd 8)) + (error "Unexpected struct pollfd size" %sizeof-struct-pollfd)) + (if (defined? 'POLLIN) (export POLLIN))