X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlxs.pod;h=5ad24d8aa3d17c81a6805e124876bd25cdc4b4b6;hb=a22f28a4268aa03ce2bafaf594271b8ff764a5f8;hp=9e70c6912651e25a049d5333b4d0c8244ebba621;hpb=7e455f685b45addf2cc78d01dda187c70274aaa3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlxs.pod b/pod/perlxs.pod index 9e70c69..5ad24d8 100644 --- a/pod/perlxs.pod +++ b/pod/perlxs.pod @@ -293,7 +293,7 @@ or less equivalent: ST(0) = newSVpv("Hello World",0); sv_2mortal(ST(0)); XSRETURN(1); - + SV * beta() CODE: @@ -319,7 +319,7 @@ CPAN modules) in the typemap file, the reference count of the C is not properly decremented. Thus, the above XSUB would leak memory whenever it is being called. The same problem exists for C. -When you're returning an C or a C, you have make sure +When you're returning an C or a C, you have to make sure their reference count is decremented by making the AV or HV mortal: AV * @@ -950,10 +950,9 @@ The XS code, with ellipsis, follows. time_t timep = NO_INIT PREINIT: char *host = "localhost"; - STRLEN n_a; CODE: if( items > 1 ) - host = (char *)SvPV(ST(1), n_a); + host = (char *)SvPV_nolen(ST(1)); RETVAL = rpcb_gettime( host, &timep ); OUTPUT: timep @@ -1212,6 +1211,12 @@ To disable version checking: VERSIONCHECK: DISABLE +Note that if the version of the PM module is an NV (a floating point +number), it will be stringified with a possible loss of precision +(currently chopping to nine decimal places) so that it may not match +the version of the XS module anymore. Quoting the $VERSION declaration +to make it a string is recommended if long version numbers are used. + =head2 The PROTOTYPES: Keyword The PROTOTYPES: keyword corresponds to B's C<-prototypes> and @@ -1242,10 +1247,9 @@ prototypes. PROTOTYPE: $;$ PREINIT: char *host = "localhost"; - STRLEN n_a; CODE: if( items > 1 ) - host = (char *)SvPV(ST(1), n_a); + host = (char *)SvPV_nolen(ST(1)); RETVAL = rpcb_gettime( host, &timep ); OUTPUT: timep