################################################################################ ## ## Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. ## Version 2.x, Copyright (C) 2001, Paul Marquess. ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. ## ## This program is free software; you can redistribute it and/or ## modify it under the same terms as Perl itself. ## ################################################################################ =provides newRV_inc newRV_noinc =implementation __UNDEFINED__ newRV_inc(sv) newRV(sv) /* Replace */ #ifndef newRV_noinc #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) # define newRV_noinc(sv) ({ SV *_sv = (SV *)newRV((sv)); SvREFCNT_dec((sv)); _sv; }) #else # define newRV_noinc(sv) ((PL_Sv = (SV *)newRV((sv))), SvREFCNT_dec((sv)), PL_Sv) #endif #endif =xsubs U32 newRV_inc_REFCNT() PREINIT: SV *sv, *rv; CODE: sv = newSViv(42); rv = newRV_inc(sv); SvREFCNT_dec(sv); RETVAL = SvREFCNT(sv); sv_2mortal(rv); OUTPUT: RETVAL U32 newRV_noinc_REFCNT() PREINIT: SV *sv, *rv; CODE: sv = newSViv(42); rv = newRV_noinc(sv); RETVAL = SvREFCNT(sv); sv_2mortal(rv); OUTPUT: RETVAL =tests plan => 2 is(&Devel::PPPort::newRV_inc_REFCNT, 1); is(&Devel::PPPort::newRV_noinc_REFCNT, 1);