X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=numeric.c;h=301584234b41ace84c258dbcceb5c282028d0f59;hb=454f1e2628e3c3cf05341675e973e8df77c9b0ae;hp=227540fba5aee687fb311a32838400d2dca3d245;hpb=7fc634935189abec1d574a9733c7093e5c9f2781;p=p5sagit%2Fp5-mst-13.2.git diff --git a/numeric.c b/numeric.c index 227540f..3015842 100644 --- a/numeric.c +++ b/numeric.c @@ -1,7 +1,7 @@ /* numeric.c * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, by Larry Wall and others + * 2000, 2001, 2002, 2003, 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -261,6 +261,7 @@ number may use '_' characters to separate digits. UV Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { + dVAR; const char *s = start; STRLEN len = *len_p; UV value = 0; @@ -269,7 +270,6 @@ Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const UV max_div_16 = UV_MAX / 16; const bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; - const char *hexdigit; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading x or 0x. @@ -288,7 +288,7 @@ Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { } for (; len-- && *s; s++) { - hexdigit = strchr((char *) PL_hexdigit, *s); + const char *hexdigit = strchr(PL_hexdigit, *s); if (hexdigit) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. @@ -317,7 +317,7 @@ Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { continue; } if (*s == '_' && len && allow_underscores && s[1] - && (hexdigit = strchr((char *) PL_hexdigit, s[1]))) + && (hexdigit = strchr(PL_hexdigit, s[1]))) { --len; ++s; @@ -471,33 +471,33 @@ For backwards compatibility. Use C instead. */ NV -Perl_scan_bin(pTHX_ char *start, STRLEN len, STRLEN *retlen) +Perl_scan_bin(pTHX_ const char *start, STRLEN len, STRLEN *retlen) { NV rnv; I32 flags = *retlen ? PERL_SCAN_ALLOW_UNDERSCORES : 0; - UV ruv = grok_bin (start, &len, &flags, &rnv); + const UV ruv = grok_bin (start, &len, &flags, &rnv); *retlen = len; return (flags & PERL_SCAN_GREATER_THAN_UV_MAX) ? rnv : (NV)ruv; } NV -Perl_scan_oct(pTHX_ char *start, STRLEN len, STRLEN *retlen) +Perl_scan_oct(pTHX_ const char *start, STRLEN len, STRLEN *retlen) { NV rnv; I32 flags = *retlen ? PERL_SCAN_ALLOW_UNDERSCORES : 0; - UV ruv = grok_oct (start, &len, &flags, &rnv); + const UV ruv = grok_oct (start, &len, &flags, &rnv); *retlen = len; return (flags & PERL_SCAN_GREATER_THAN_UV_MAX) ? rnv : (NV)ruv; } NV -Perl_scan_hex(pTHX_ char *start, STRLEN len, STRLEN *retlen) +Perl_scan_hex(pTHX_ const char *start, STRLEN len, STRLEN *retlen) { NV rnv; I32 flags = *retlen ? PERL_SCAN_ALLOW_UNDERSCORES : 0; - UV ruv = grok_hex (start, &len, &flags, &rnv); + const UV ruv = grok_hex (start, &len, &flags, &rnv); *retlen = len; return (flags & PERL_SCAN_GREATER_THAN_UV_MAX) ? rnv : (NV)ruv; @@ -516,7 +516,7 @@ Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send) #ifdef USE_LOCALE_NUMERIC if (PL_numeric_radix_sv && IN_LOCALE) { STRLEN len; - char* radix = SvPV(PL_numeric_radix_sv, len); + const char* radix = SvPV(PL_numeric_radix_sv, len); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; @@ -757,7 +757,7 @@ S_mulexp10(NV value, I32 exponent) if (exponent == 0) return value; if (value == 0) - return 0; + return (NV)0; /* On OpenVMS VAX we by default use the D_FLOAT double format, * and that format does not have *easy* capabilities [1] for @@ -843,11 +843,11 @@ char* Perl_my_atof2(pTHX_ const char* orig, NV* value) { NV result[3] = {0.0, 0.0, 0.0}; - char* s = (char*)orig; + const char* s = orig; #ifdef USE_PERL_ATOF UV accumulator[2] = {0,0}; /* before/after dp */ bool negative = 0; - char* send = s + strlen(orig) - 1; + const char* send = s + strlen(orig) - 1; bool seen_digit = 0; I32 exp_adjust[2] = {0,0}; I32 exp_acc[2] = {-1, -1}; @@ -945,7 +945,7 @@ Perl_my_atof2(pTHX_ const char* orig, NV* value) ++exp_acc[seen_dp]; } } - else if (!seen_dp && GROK_NUMERIC_RADIX((const char **)&s, send)) { + else if (!seen_dp && GROK_NUMERIC_RADIX(&s, send)) { seen_dp = 1; if (sig_digits > MAX_SIG_DIGITS) { ++s; @@ -998,7 +998,7 @@ Perl_my_atof2(pTHX_ const char* orig, NV* value) result[2] = -result[2]; #endif /* USE_PERL_ATOF */ *value = result[2]; - return s; + return (char *)s; } #if ! defined(HAS_MODFL) && defined(HAS_AINTL) && defined(HAS_COPYSIGNL) @@ -1017,3 +1017,13 @@ Perl_my_frexpl(long double x, int *e) { return (scalbnl(x, -*e)); } #endif + +/* + * Local variables: + * c-indentation-style: bsd + * c-basic-offset: 4 + * indent-tabs-mode: t + * End: + * + * ex: set ts=8 sts=4 sw=4 noet: + */