This is an automated email from the git hooks/post-receive script. ppm-guest pushed a commit to annotated tag v0.36 in repository libmath-prime-util-perl.
commit 50b9d5c693cd50290922c1e821916755bdd9ff26 Author: Dana Jacobsen <d...@acm.org> Date: Wed Jan 1 01:23:08 2014 -0800 XS tweaks from bulk88 --- XS.xs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/XS.xs b/XS.xs index 3ce3d02..d681e8c 100644 --- a/XS.xs +++ b/XS.xs @@ -89,16 +89,21 @@ static int _validate_int(pTHX_ SV* n, int negok) int ret, isneg = 0; /* TODO: magic, grok_number, etc. */ - /* fix multiple magic aware Sv*V getters */ - if (SvGAMAGIC(n)) return 0; /* Leave while we still can */ - if (!SvOK(n)) croak("Parameter must be defined"); - if (SvIOK(n)) { /* If defined as number, use that */ - if (SvIsUV(n) || SvIV(n) >= 0) return 1; + if ((SvFLAGS(n) & (SVf_IOK | +#if PERL_REVISION >=5 && PERL_VERSION >= 9 && PERL_SUBVERSION >= 4 + SVf_ROK | +#else + SVf_AMAGIC | +#endif + SVs_GMG )) == SVf_IOK) { /* If defined as number, use it */ + if (SvIsUV(n) || SvIVX(n) >= 0) return 1; /* The normal case */ if (negok) return -1; - else croak("Parameter '%" SVf "' must be a positive integer", n); + else croak("Parameter '%" SVf "' must be a positive integer", n); } + if (SvGAMAGIC(n)) return 0; /* Leave while we still can */ + if (!SvOK(n)) croak("Parameter must be defined"); if (SvROK(n) && !sv_isa(n, "Math::BigInt")) return 0; - ptr = SvPV(n, len); /* Includes stringifying bigints */ + ptr = SvPV_nomg(n, len); /* Includes stringifying bigints */ if (len == 0 || ptr == 0) croak("Parameter must be a positive integer"); if (ptr[0] == '-' && negok) { isneg = 1; ptr++; len--; /* Read negative sign */ @@ -684,7 +689,7 @@ carmichael_lambda(IN SV* svn) } return; /* skip implicit PUTBACK */ -int +bool _validate_num(SV* svn, ...) PREINIT: SV* sv1; @@ -694,8 +699,9 @@ _validate_num(SV* svn, ...) * $is_valid = _validate_num( $n [, $min [, $max] ] ) * Return 0 if we're befuddled by the input. * Otherwise croak if n isn't >= 0 and integer, n < min, or n > max. + * Small bigints will be converted to scalars. */ - RETVAL = 0; + RETVAL = FALSE; if (_validate_int(aTHX_ svn, 0)) { if (SvROK(svn)) { /* Convert small Math::BigInt object into scalar */ UV n = my_svuv(svn); @@ -713,7 +719,7 @@ _validate_num(SV* svn, ...) MPUassert( items <= 3, "_validate_num takes at most 3 parameters"); } } - RETVAL = 1; + RETVAL = TRUE; } OUTPUT: RETVAL -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmath-prime-util-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits