X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=util.c;h=40abb483b03868345fc26f448bd3ba06ebbada56;hb=9ac5eb64d274bdbd879ebb568a13f392d2a50575;hp=e74fe719c44a11121547e8876c78eb00df8f1748;hpb=4ffa73a366885f682ceccdeee45e43075e0c312e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/util.c b/util.c index e74fe71..40abb48 100644 --- a/util.c +++ b/util.c @@ -1,6 +1,6 @@ /* util.c * - * Copyright (c) 1991-2002, Larry Wall + * Copyright (c) 1991-2003, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -357,8 +357,12 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags) I32 rarest = 0; U32 frequency = 256; - if (flags & FBMcf_TAIL) + if (flags & FBMcf_TAIL) { + MAGIC *mg = SvUTF8(sv) && SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_utf8) : NULL; sv_catpvn(sv, "\n", 1); /* Taken into account in fbm_instr() */ + if (mg && mg->mg_len >= 0) + mg->mg_len++; + } s = (U8*)SvPV_force(sv, len); (void)SvUPGRADE(sv, SVt_PVBM); if (len == 0) /* TAIL might be on a zero-length string. */ @@ -3778,7 +3782,7 @@ Perl_scan_version(pTHX_ char *s, SV *rv) orev = rev; rev += (*s - '0') * mult; mult /= 10; - if ( abs(orev) > abs(rev) ) + if ( PERL_ABS(orev) > PERL_ABS(rev) ) Perl_croak(aTHX_ "Integer overflow in version"); s++; } @@ -3788,7 +3792,7 @@ Perl_scan_version(pTHX_ char *s, SV *rv) orev = rev; rev += (*end - '0') * mult; mult *= 10; - if ( abs(orev) > abs(rev) ) + if ( PERL_ABS(orev) > PERL_ABS(rev) ) Perl_croak(aTHX_ "Integer overflow in version"); } } @@ -3907,11 +3911,11 @@ Perl_vnumify(pTHX_ SV *vs) return sv; } digit = SvIVX(*av_fetch((AV *)vs, 0, 0)); - Perl_sv_setpvf(aTHX_ sv,"%d.",abs(digit)); + Perl_sv_setpvf(aTHX_ sv,"%d.", PERL_ABS(digit)); for ( i = 1 ; i <= len ; i++ ) { digit = SvIVX(*av_fetch((AV *)vs, i, 0)); - Perl_sv_catpvf(aTHX_ sv,"%03d",abs(digit)); + Perl_sv_catpvf(aTHX_ sv,"%03d", PERL_ABS(digit)); } if ( len == 0 ) Perl_sv_catpv(aTHX_ sv,"000"); @@ -3989,8 +3993,8 @@ Perl_vcmp(pTHX_ SV *lsv, SV *rsv) I32 right = SvIV(*av_fetch((AV *)rsv,i,0)); bool lbeta = left < 0 ? 1 : 0; bool rbeta = right < 0 ? 1 : 0; - left = abs(left); - right = abs(right); + left = PERL_ABS(left); + right = PERL_ABS(right); if ( left < right || (left == right && lbeta && !rbeta) ) retval = -1; if ( left > right || (left == right && rbeta && !lbeta) ) @@ -4355,7 +4359,7 @@ Perl_parse_unicode_opts(pTHX_ char **popt) opt = PERL_UNICODE_DEFAULT_FLAGS; if (opt & ~PERL_UNICODE_ALL_FLAGS) - Perl_croak(aTHX_ "Unknown Unicode option value 0x%"UVuf, + Perl_croak(aTHX_ "Unknown Unicode option value %"UVuf, (UV) (opt & ~PERL_UNICODE_ALL_FLAGS)); *popt = p;