Re: POSIX::sigprocmask implemented incorrectly
Alan Burlison [Mon, 9 Aug 2004 10:30:25 +0000 (11:30 +0100)]
Message-ID: <41174431.6050803@sun.com>

p4raw-id: //depot/perl@23204

ext/POSIX/POSIX.xs

index c6a6114..25c4250 100644 (file)
@@ -1393,9 +1393,9 @@ sigprocmask(how, sigset, oldsigset = 0)
        POSIX::SigSet           sigset = NO_INIT
        POSIX::SigSet           oldsigset = NO_INIT
 INIT:
-       if (SvTYPE(ST(1)) == SVt_NULL) {
+       if (! SvOK(ST(1))) {
            sigset = NULL;
-       } else if (sv_derived_from(ST(1), "POSIX::SigSet")) {
+       } else if (sv_isa(ST(1), "POSIX::SigSet")) {
            IV tmp = SvIV((SV*)SvRV(ST(1)));
            sigset = INT2PTR(POSIX__SigSet,tmp);
        } else {
@@ -1404,7 +1404,7 @@ INIT:
 
        if ( items < 3 || SvTYPE(ST(2)) == SVt_NULL) {
            oldsigset = NULL;
-       } else if (sv_derived_from(ST(2), "POSIX::SigSet")) {
+       } else if (sv_isa(ST(2), "POSIX::SigSet")) {
            IV tmp = SvIV((SV*)SvRV(ST(2)));
            oldsigset = INT2PTR(POSIX__SigSet,tmp);
        } else {