From: Jarkko Hietaniemi Date: Mon, 16 Oct 2000 01:22:46 +0000 (+0000) Subject: Fix few quad issues, which for example broke chr(~chr(~0)) for UTF8. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=467f0320ba38aa93b099784d0a7bcd097f0d642c;p=p5sagit%2Fp5-mst-13.2.git Fix few quad issues, which for example broke chr(~chr(~0)) for UTF8. p4raw-id: //depot/perl@7236 --- diff --git a/pp.c b/pp.c index 72d9dee..84949aa 100644 --- a/pp.c +++ b/pp.c @@ -1068,7 +1068,7 @@ PP(pp_repeat) { djSP; dATARGET; tryAMAGICbin(repeat,opASSIGN); { - register I32 count = POPi; + register IV count = POPi; if (GIMME == G_ARRAY && PL_op->op_private & OPpREPEAT_DOLIST) { dMARK; I32 items = SP - MARK; @@ -2104,8 +2104,8 @@ PP(pp_substr) PP(pp_vec) { djSP; dTARGET; - register I32 size = POPi; - register I32 offset = POPi; + register IV size = POPi; + register IV offset = POPi; register SV *src = POPs; I32 lvalue = PL_op->op_flags & OPf_MOD; @@ -2238,7 +2238,7 @@ PP(pp_chr) { djSP; dTARGET; char *tmps; - U32 value = POPu; + UV value = POPu; (void)SvUPGRADE(TARG,SVt_PV); @@ -5005,7 +5005,7 @@ PP(pp_split) { djSP; dTARG; AV *ary; - register I32 limit = POPi; /* note, negative is forever */ + register IV limit = POPi; /* note, negative is forever */ SV *sv = POPs; bool doutf8 = DO_UTF8(sv); STRLEN len; diff --git a/pp_hot.c b/pp_hot.c index 4ddb12c..dc5e3b6 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -2780,7 +2780,7 @@ PP(pp_aelem) { djSP; SV** svp; - I32 elem = POPi; + IV elem = POPi; AV* av = (AV*)POPs; U32 lval = PL_op->op_flags & OPf_MOD; U32 defer = (PL_op->op_private & OPpLVAL_DEFER) && (elem > AvFILL(av));