X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp.c;h=2958fba4bf10290bde1e113b85514ad7900e4c88;hb=75d1b5dfc310050618a644104f03818db57b4915;hp=910101a44c95eec81e83b3cec79860ee09c34dcd;hpb=132efe8bfb7cd0fb1beb15aaf284e33bf44eb1fa;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp.c b/pp.c index 910101a..2958fba 100644 --- a/pp.c +++ b/pp.c @@ -972,6 +972,7 @@ PP(pp_pow) register unsigned int highbit = 8 * sizeof(UV); register unsigned int lowbit = 0; register unsigned int diff; + bool odd_power = (bool)(power & 1); while ((diff = (highbit - lowbit) >> 1)) { if (baseuv & ~((1 << (lowbit + diff)) - 1)) lowbit += diff; @@ -994,7 +995,7 @@ PP(pp_pow) } } SP--; - if (baseuok || !(power & 1)) + if (baseuok || !odd_power) /* answer is positive */ SETu( result ); else if (result <= (UV)IV_MAX) @@ -3110,6 +3111,8 @@ PP(pp_substr) sv_upgrade(TARG, SVt_PVLV); sv_magic(TARG, Nullsv, PERL_MAGIC_substr, Nullch, 0); } + else + (void)SvOK_off(TARG); LvTYPE(TARG) = 'x'; if (LvTARG(TARG) != sv) {