X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp.c;h=7ebc7b807f6ddf5ad063a40964f273ba5d9eca7c;hb=7c04078ea21d9035bc412dbd7b8edf35773a2c43;hp=6b06c97d7c2a3c96b52982af19fbb6e58cebe5f4;hpb=243d6ab3aef600d61cccf45a3b1140e272a49e86;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp.c b/pp.c index 6b06c97..7ebc7b8 100644 --- a/pp.c +++ b/pp.c @@ -2200,6 +2200,8 @@ PP(pp_bit_and) dSP; dATARGET; tryAMAGICbin(band,opASSIGN); { dPOPTOPssrl; + if (SvGMAGICAL(left)) mg_get(left); + if (SvGMAGICAL(right)) mg_get(right); if (SvNIOKp(left) || SvNIOKp(right)) { if (PL_op->op_private & HINT_INTEGER) { IV i = SvIV(left) & SvIV(right); @@ -2223,6 +2225,8 @@ PP(pp_bit_xor) dSP; dATARGET; tryAMAGICbin(bxor,opASSIGN); { dPOPTOPssrl; + if (SvGMAGICAL(left)) mg_get(left); + if (SvGMAGICAL(right)) mg_get(right); if (SvNIOKp(left) || SvNIOKp(right)) { if (PL_op->op_private & HINT_INTEGER) { IV i = (USE_LEFT(left) ? SvIV(left) : 0) ^ SvIV(right); @@ -2246,6 +2250,8 @@ PP(pp_bit_or) dSP; dATARGET; tryAMAGICbin(bor,opASSIGN); { dPOPTOPssrl; + if (SvGMAGICAL(left)) mg_get(left); + if (SvGMAGICAL(right)) mg_get(right); if (SvNIOKp(left) || SvNIOKp(right)) { if (PL_op->op_private & HINT_INTEGER) { IV i = (USE_LEFT(left) ? SvIV(left) : 0) | SvIV(right); @@ -2347,6 +2353,8 @@ PP(pp_complement) dSP; dTARGET; tryAMAGICun(compl); { dTOPss; + if (SvGMAGICAL(sv)) + mg_get(sv); if (SvNIOKp(sv)) { if (PL_op->op_private & HINT_INTEGER) { IV i = ~SvIV(sv); @@ -2794,8 +2802,7 @@ PP(pp_int) if (value > (NV)IV_MIN - 0.5) { SETi(I_V(value)); } else { - /* This is maint, and we don't have Perl_ceil in perl.h */ - SETn(-Perl_floor(-value)); + SETn(Perl_ceil(value)); } } }