PP(pp_sort)
{
- dSP; dMARK; dORIGMARK;
+ dVAR; dSP; dMARK; dORIGMARK;
register SV **p1 = ORIGMARK+1, **p2;
register I32 max, i;
AV* av = Nullav;
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;
/* 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);
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;
}
max = SP - MARK;
}
- if (private & OPpSORT_DESCEND) {
+ if (priv & OPpSORT_DESCEND) {
sortsvp = S_sortsv_desc;
}
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
: 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;
static I32
sortcv(pTHX_ SV *a, SV *b)
{
+ dVAR;
I32 oldsaveix = PL_savestack_ix;
I32 oldscopeix = PL_scopestack_ix;
I32 result;
static I32
sortcv_stacked(pTHX_ SV *a, SV *b)
{
+ dVAR;
I32 oldsaveix = PL_savestack_ix;
I32 oldscopeix = PL_scopestack_ix;
I32 result;
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;
static I32
sortcv_xsub(pTHX_ SV *a, SV *b)
{
- dSP;
+ dVAR; dSP;
I32 oldsaveix = PL_savestack_ix;
I32 oldscopeix = PL_scopestack_ix;
I32 result;