Created
January 24, 2013 21:42
-
-
Save postwait/4628098 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs b/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs | |
| index 3024757..212945d 100644 | |
| --- a/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs | |
| +++ b/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs | |
| @@ -14,12 +14,6 @@ | |
| #define IVCONST(s, c) newCONSTSUB(s, #c, newSViv((int)(intptr_t)c)); | |
| #define POFF (sizeof ("PRIV_") - 1) | |
| -#define RETPRIVSET(set) \ | |
| - ST(0) = sv_newmortal(); \ | |
| - sv_setref_pv(ST(0), "Sun::Solaris::Privilege::PrivsetPtr", \ | |
| - (void*)(set)); \ | |
| - SvREADONLY_on(SvRV(ST(0))) | |
| - | |
| typedef int sysret; | |
| typedef priv_set_t Sun__Solaris__Privilege__Privset; | |
| @@ -125,11 +119,11 @@ CODE: | |
| if (getppriv(which, RETVAL) != 0) { | |
| priv_freeset(RETVAL); | |
| XSRETURN_UNDEF; | |
| - } else { | |
| - RETPRIVSET(RETVAL); | |
| } | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| sysret | |
| setppriv(op, which, set) | |
| @@ -145,9 +139,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_emptyset(RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Privilege::Privset * | |
| priv_fillset() | |
| @@ -157,9 +152,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_fillset(RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| boolean_t | |
| priv_isemptyset(set) | |
| @@ -198,9 +194,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_intersect(set1, RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Privilege::Privset * | |
| priv_union(set1, set2) | |
| @@ -212,9 +209,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_union(set1, RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Privilege::Privset * | |
| priv_inverse(set1) | |
| @@ -225,9 +223,10 @@ CODE: | |
| XSRETURN_UNDEF; | |
| } | |
| priv_inverse(RETVAL); | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| sysret | |
| @@ -243,9 +242,10 @@ CODE: | |
| if (RETVAL == NULL) { | |
| XSRETURN_UNDEF; | |
| } | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| sysret | |
| @@ -278,9 +278,10 @@ CODE: | |
| if (RETVAL == NULL) { | |
| XSRETURN_UNDEF; | |
| } | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| char * | |
| priv_gettext(priv) | |
| @@ -303,5 +304,6 @@ void | |
| Privilege_DESTROY(ps) | |
| Sun::Solaris::Privilege::Privset *ps; | |
| CODE: | |
| - priv_freeset(ps); | |
| + if (ps != NULL) | |
| + priv_freeset(ps); | |
| diff --git a/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs b/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs | |
| index fe747cb..ca941f1 100644 | |
| --- a/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs | |
| +++ b/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs | |
| @@ -31,17 +31,6 @@ dupset(const priv_set_t *s) | |
| return (new); | |
| } | |
| -#define RETPRIVSET(set) \ | |
| - ST(0) = sv_newmortal(); \ | |
| - sv_setref_pv(ST(0), "Sun::Solaris::Privilege::PrivsetPtr", \ | |
| - (void*)(set)); \ | |
| - SvREADONLY_on(SvRV(ST(0))) | |
| - | |
| -#define RETUCRED(uc) \ | |
| - ST(0) = sv_newmortal(); \ | |
| - sv_setref_pv(ST(0), "Sun::Solaris::Ucred::UcredPtr", \ | |
| - (void*)(uc)); \ | |
| - SvREADONLY_on(SvRV(ST(0))) | |
| /* | |
| * The XS code exported to perl is below here. Note that the XS preprocessor | |
| * has its own commenting syntax, so all comments from this point on are in | |
| @@ -111,9 +100,10 @@ CODE: | |
| val = ucred_getprivset(uc, which); | |
| if (val == NULL || (RETVAL = dupset(val)) == NULL) | |
| XSRETURN_UNDEF; | |
| - RETPRIVSET(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| Sun::Solaris::Ucred::Ucred * | |
| getpeerucred(fd) | |
| @@ -122,9 +112,10 @@ CODE: | |
| RETVAL = NULL; | |
| if (getpeerucred(fd, &RETVAL) != 0) | |
| XSRETURN_UNDEF; | |
| - RETUCRED(RETVAL); | |
| OUTPUT: | |
| RETVAL | |
| +CLEANUP: | |
| + SvREADONLY_on(SvRV(ST(0))); | |
| void | |
| ucred_getgroups(uc) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment