POSIX.xs has recently been giving the following warnings:

POSIX.xs: In function `XS_POSIX_sigaction':
POSIX.xs:1348: warning: comparison of distinct pointer types lacks a cast
POSIX.xs:1357: warning: assignment from incompatible pointer type

The problem comes with assigning Perl's Sigaction_t to sigaction.sa_handler.  It
seems to like C<void *>, so that's what we can give it.  It's paassing its
tests from what I can see, but we'll see how the smokes do on platforms other 
than Linux and OpenBSD.

Steve Peters
[EMAIL PROTECTED]

--- ext/POSIX/POSIX.xs.old      Tue Jul 19 16:46:37 2005
+++ ext/POSIX/POSIX.xs  Wed Jul 27 10:50:17 2005
@@ -1347,7 +1347,7 @@

                /* Get back whether the old handler used safe signals. */
                svp = hv_fetch(oldaction, "SAFE", 4, TRUE);
-               sv_setiv(*svp, oact.sa_handler == PL_csighandlerp);
+               sv_setiv(*svp, oact.sa_handler == (void*)PL_csighandlerp);
            }

            if (action) {
@@ -1356,7 +1356,8 @@
                   (BTW, "csighandler" is very different from "sighandler".) */
                svp = hv_fetch(action, "SAFE", 4, FALSE);
                act.sa_handler = (*svp && SvTRUE(*svp))
-                                ? PL_csighandlerp : PL_sighandlerp;
+                                ? (void*)PL_csighandlerp :
+                                   (void*)PL_sighandlerp;

                /* Vector new Perl handler through %SIG.
                   (The core signal handlers read %SIG to dispatch.) */

Reply via email to