X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_sort.c;h=1e338a8188fcff86f87c82592a9d1c866bb8b391;hb=612cfdf27c84f3ca36e00ec7f6925d0a5223e483;hp=da019d0a07830c181f15ab2a0ffbeebcb225ac01;hpb=241d1a3bc2de8fb12dfbcb48afd9660bc9218a12;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_sort.c b/pp_sort.c index da019d0..1e338a8 100644 --- a/pp_sort.c +++ b/pp_sort.c @@ -1463,7 +1463,7 @@ Perl_sortsv(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp) } -void +static void S_sortsv_desc(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp) { void (*sortsvp)(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp, U32 flags) @@ -1490,7 +1490,7 @@ S_sortsv_desc(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp) PP(pp_sort) { - dSP; dMARK; dORIGMARK; + dVAR; dSP; dMARK; dORIGMARK; register SV **p1 = ORIGMARK+1, **p2; register I32 max, i; AV* av = Nullav; @@ -1503,7 +1503,7 @@ PP(pp_sort) bool hasargs = FALSE; I32 is_xsub = 0; I32 sorting_av = 0; - U8 private = PL_op->op_private; + U8 priv = PL_op->op_private; U8 flags = PL_op->op_flags; void (*sortsvp)(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp) = Perl_sortsv; @@ -1566,7 +1566,7 @@ PP(pp_sort) /* optimiser converts "@a = sort @a" to "sort \@a"; * in case of tied @a, pessimise: push (@a) onto stack, then assign * result back to @a at the end of this function */ - if (private & OPpSORT_INPLACE) { + if (priv & OPpSORT_INPLACE) { assert( MARK+1 == SP && *SP && SvTYPE(*SP) == SVt_PVAV); (void)POPMARK; /* remove mark associated with ex-OP_AASSIGN */ av = (AV*)(*SP); @@ -1574,7 +1574,7 @@ PP(pp_sort) if (SvMAGICAL(av)) { MEXTEND(SP, max); p2 = SP; - for (i=0; i < (U32)max; i++) { + for (i=0; i < max; i++) { SV **svp = av_fetch(av, i, FALSE); *SP++ = (svp) ? *svp : Nullsv; } @@ -1589,7 +1589,7 @@ PP(pp_sort) max = SP - MARK; } - if (private & OPpSORT_DESCEND) { + if (priv & OPpSORT_DESCEND) { sortsvp = S_sortsv_desc; } @@ -1668,8 +1668,8 @@ PP(pp_sort) MEXTEND(SP, 20); /* Can't afford stack realloc on signal. */ start = sorting_av ? AvARRAY(av) : ORIGMARK+1; sortsvp(aTHX_ start, max, - (private & OPpSORT_NUMERIC) - ? ( (private & OPpSORT_INTEGER) + (priv & OPpSORT_NUMERIC) + ? ( (priv & OPpSORT_INTEGER) ? ( overloading ? amagic_i_ncmp : sv_i_ncmp) : ( overloading ? amagic_ncmp : sv_ncmp)) : ( IN_LOCALE_RUNTIME @@ -1678,7 +1678,7 @@ PP(pp_sort) : sv_cmp_locale_static) : ( overloading ? amagic_cmp : sv_cmp_static))); } - if (private & OPpSORT_REVERSE) { + if (priv & OPpSORT_REVERSE) { SV **q = start+max-1; while (start < q) { SV *tmp = *start; @@ -1692,8 +1692,7 @@ PP(pp_sort) SV *sv; SV** base, **didstore; for (base = ORIGMARK+1, i=0; i < max; i++) { - sv = NEWSV(28,0); - sv_setsv(sv, base[i]); + sv = newSVsv(base[i]); base[i] = sv; } av_clear(av); @@ -1715,6 +1714,7 @@ PP(pp_sort) static I32 sortcv(pTHX_ SV *a, SV *b) { + dVAR; I32 oldsaveix = PL_savestack_ix; I32 oldscopeix = PL_scopestack_ix; I32 result; @@ -1738,6 +1738,7 @@ sortcv(pTHX_ SV *a, SV *b) static I32 sortcv_stacked(pTHX_ SV *a, SV *b) { + dVAR; I32 oldsaveix = PL_savestack_ix; I32 oldscopeix = PL_scopestack_ix; I32 result; @@ -1749,12 +1750,12 @@ sortcv_stacked(pTHX_ SV *a, SV *b) SV** ary = AvALLOC(av); if (AvARRAY(av) != ary) { AvMAX(av) += AvARRAY(av) - AvALLOC(av); - SvPVX(av) = (char*)ary; + SvPV_set(av, (char*)ary); } if (AvMAX(av) < 1) { AvMAX(av) = 1; Renew(ary,2,SV*); - SvPVX(av) = (char*)ary; + SvPV_set(av, (char*)ary); } } AvFILLp(av) = 1; @@ -1779,7 +1780,7 @@ sortcv_stacked(pTHX_ SV *a, SV *b) static I32 sortcv_xsub(pTHX_ SV *a, SV *b) { - dSP; + dVAR; dSP; I32 oldsaveix = PL_savestack_ix; I32 oldscopeix = PL_scopestack_ix; I32 result; @@ -1926,5 +1927,5 @@ amagic_cmp_locale(pTHX_ register SV *str1, register SV *str2) * indent-tabs-mode: t * End: * - * vim: expandtab shiftwidth=4: + * vim: shiftwidth=4: */