--- perl-5.8.7/pp_sort.c.bz172587 2005-04-08 05:31:47.000000000 -0400 +++ perl-5.8.7/pp_sort.c 2005-11-07 12:57:07.000000000 -0500 @@ -1510,6 +1510,7 @@ if (gimme != G_ARRAY) { SP = MARK; + EXTEND(SP,1); RETPUSHUNDEF; } --- perl-5.8.7/pp_hot.c.bz172587 2005-04-22 10:12:27.000000000 -0400 +++ perl-5.8.7/pp_hot.c 2005-11-07 12:55:16.000000000 -0500 @@ -639,12 +639,12 @@ } } SP = ORIGMARK; - PUSHs(&PL_sv_yes); + XPUSHs(&PL_sv_yes); RETURN; just_say_no: SP = ORIGMARK; - PUSHs(&PL_sv_undef); + XPUSHs(&PL_sv_undef); RETURN; } --- perl-5.8.7/pp_sys.c.bz172587 2005-04-27 18:12:46.000000000 -0400 +++ perl-5.8.7/pp_sys.c 2005-11-07 13:03:39.000000000 -0500 @@ -429,13 +429,16 @@ SV *tmpsv; char *tmps; STRLEN len; - if (SP - MARK != 1) { + if (SP - MARK > 1) { dTARGET; do_join(TARG, &PL_sv_no, MARK, SP); tmpsv = TARG; SP = MARK + 1; - } - else { + } + else if (SP == MARK ) { + tmpsv = &PL_sv_no; + EXTEND(SP, 1); + } else { tmpsv = TOPs; } tmps = SvPV(tmpsv, len); @@ -3517,7 +3520,7 @@ I32 value = (I32)apply(PL_op->op_type, MARK, SP); SP = MARK; - PUSHi(value); + XPUSHi(value); RETURN; #else DIE(aTHX_ PL_no_func, "chown"); @@ -4127,7 +4130,7 @@ if (errno != EAGAIN) { value = -1; SP = ORIGMARK; - PUSHi(value); + XPUSHi(value); if (did_pipes) { PerlLIO_close(pp[0]); PerlLIO_close(pp[1]); @@ -4176,7 +4179,7 @@ STATUS_CURRENT = -1; } } - PUSHi(STATUS_CURRENT); + XPUSHi(STATUS_CURRENT); RETURN; } if (did_pipes) { @@ -4222,7 +4225,7 @@ STATUS_NATIVE_SET(value); do_execfree(); SP = ORIGMARK; - PUSHi(result ? value : STATUS_CURRENT); + XPUSHi(result ? value : STATUS_CURRENT); #endif /* !FORK or VMS */ RETURN; } @@ -4275,7 +4278,7 @@ } SP = ORIGMARK; - PUSHi(value); + XPUSHi(value); RETURN; } --- perl-5.8.7/pp.c.bz172587 2005-05-16 11:30:13.000000000 -0400 +++ perl-5.8.7/pp.c 2005-11-07 12:56:32.000000000 -0500 @@ -721,7 +721,7 @@ while (MARK < SP) do_chop(TARG, *++MARK); SP = ORIGMARK; - PUSHTARG; + XPUSHTARG; RETURN; } @@ -739,7 +739,7 @@ while (SP > MARK) count += do_chomp(POPs); - PUSHi(count); + XPUSHi(count); RETURN; }