1################################################################################
2##
3##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
4##  Version 2.x, Copyright (C) 2001, Paul Marquess.
5##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
6##
7##  This program is free software; you can redistribute it and/or
8##  modify it under the same terms as Perl itself.
9##
10################################################################################
11
12=provides
13
14newRV_inc
15newRV_noinc
16
17=implementation
18
19__UNDEFINED__  newRV_inc(sv)  newRV(sv)   /* Replace */
20
21#ifndef newRV_noinc
22#if { NEED newRV_noinc }
23SV *
24newRV_noinc(SV *sv)
25{
26  SV *rv = (SV *)newRV(sv);
27  SvREFCNT_dec(sv);
28  return rv;
29}
30#endif
31#endif
32
33=xsinit
34
35#define NEED_newRV_noinc
36
37=xsubs
38
39U32
40newRV_inc_REFCNT()
41        PREINIT:
42                SV *sv, *rv;
43        CODE:
44                sv = newSViv(42);
45                rv = newRV_inc(sv);
46                SvREFCNT_dec(sv);
47                RETVAL = SvREFCNT(sv);
48                sv_2mortal(rv);
49        OUTPUT:
50                RETVAL
51
52U32
53newRV_noinc_REFCNT()
54        PREINIT:
55                SV *sv, *rv;
56        CODE:
57                sv = newSViv(42);
58                rv = newRV_noinc(sv);
59                RETVAL = SvREFCNT(sv);
60                sv_2mortal(rv);
61        OUTPUT:
62                RETVAL
63
64=tests plan => 2
65
66ok(&Devel::PPPort::newRV_inc_REFCNT, 1);
67ok(&Devel::PPPort::newRV_noinc_REFCNT, 1);
68