X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=doop.c;h=22495e6fa0f28ccb89d0856db493592f1ad799ff;hb=469bf43793110471bf2ceb5e99f0e9cc630d60fe;hp=a3663f9d1da3e9530971f0aa510067cb1e4a566a;hpb=b6429b1b67c6f0e2a8a4aac1874df3fa87f9d71b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/doop.c b/doop.c index a3663f9..22495e6 100644 --- a/doop.c +++ b/doop.c @@ -18,7 +18,20 @@ #include #endif -static I32 +#ifndef PERL_OBJECT +static I32 do_trans_CC_simple _((SV *sv)); +static I32 do_trans_CC_count _((SV *sv)); +static I32 do_trans_CC_complex _((SV *sv)); +static I32 do_trans_UU_simple _((SV *sv)); +static I32 do_trans_UU_count _((SV *sv)); +static I32 do_trans_UU_complex _((SV *sv)); +static I32 do_trans_UC_simple _((SV *sv)); +static I32 do_trans_CU_simple _((SV *sv)); +static I32 do_trans_UC_trivial _((SV *sv)); +static I32 do_trans_CU_trivial _((SV *sv)); +#endif + +STATIC I32 do_trans_CC_simple(SV *sv) { dTHR; @@ -48,7 +61,7 @@ do_trans_CC_simple(SV *sv) return matches; } -static I32 +STATIC I32 do_trans_CC_count(SV *sv) { dTHR; @@ -74,7 +87,7 @@ do_trans_CC_count(SV *sv) return matches; } -static I32 +STATIC I32 do_trans_CC_complex(SV *sv) { dTHR; @@ -131,7 +144,7 @@ do_trans_CC_complex(SV *sv) return matches; } -static I32 +STATIC I32 do_trans_UU_simple(SV *sv) { dTHR; @@ -183,7 +196,7 @@ do_trans_UU_simple(SV *sv) return matches; } -static I32 +STATIC I32 do_trans_UU_count(SV *sv) { dTHR; @@ -202,16 +215,15 @@ do_trans_UU_count(SV *sv) send = s + len; while (s < send) { - if ((uv = swash_fetch(rv, s)) < none) { - s += UTF8SKIP(s); + if ((uv = swash_fetch(rv, s)) < none) matches++; - } + s += UTF8SKIP(s); } return matches; } -static I32 +STATIC I32 do_trans_UC_simple(SV *sv) { dTHR; @@ -264,7 +276,7 @@ do_trans_UC_simple(SV *sv) return matches; } -static I32 +STATIC I32 do_trans_CU_simple(SV *sv) { dTHR; @@ -327,7 +339,7 @@ do_trans_CU_simple(SV *sv) /* utf-8 to latin-1 */ -static I32 +STATIC I32 do_trans_UC_trivial(SV *sv) { dTHR; @@ -359,7 +371,7 @@ do_trans_UC_trivial(SV *sv) /* latin-1 to utf-8 */ -static I32 +STATIC I32 do_trans_CU_trivial(SV *sv) { dTHR; @@ -393,7 +405,7 @@ do_trans_CU_trivial(SV *sv) return matches; } -static I32 +STATIC I32 do_trans_UU_complex(SV *sv) { dTHR; @@ -581,10 +593,11 @@ do_trans_UU_complex(SV *sv) I32 do_trans(SV *sv) { + dTHR; STRLEN len; if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL)) - croak(no_modify); + croak(PL_no_modify); (void)SvPV(sv, len); if (!len) @@ -640,8 +653,7 @@ do_join(register SV *sv, SV *del, register SV **mark, register SV **sp) mark++; len = (items > 0 ? (delimlen * (items - 1) ) : 0); - if (SvTYPE(sv) < SVt_PV) - sv_upgrade(sv, SVt_PV); + (void)SvUPGRADE(sv, SVt_PV); if (SvLEN(sv) < len + items) { /* current length is way too short */ while (items-- > 0) { if (*mark && !SvGMAGICAL(*mark) && SvOK(*mark)) { @@ -909,7 +921,8 @@ do_vop(I32 optype, SV *sv, SV *left, SV *right) len = leftlen < rightlen ? leftlen : rightlen; lensave = len; if (SvOK(sv) || SvTYPE(sv) > SVt_PVMG) { - dc = SvPV_force(sv, PL_na); + STRLEN n_a; + dc = SvPV_force(sv, n_a); if (SvCUR(sv) < len) { dc = SvGROW(sv, len + 1); (void)memzero(dc + SvCUR(sv), len - SvCUR(sv) + 1); @@ -1048,7 +1061,7 @@ do_kv(ARGSproto) RETURN; } - if (!SvRMAGICAL(keys) || !mg_find((SV*)keys,'P')) + if (! SvTIED_mg((SV*)keys, 'P')) i = HvKEYS(keys); else { i = 0;