Fix few quad issues, which for example broke chr(~chr(~0)) for UTF8.
Jarkko Hietaniemi [Mon, 16 Oct 2000 01:22:46 +0000 (01:22 +0000)]
p4raw-id: //depot/perl@7236

pp.c
pp_hot.c

diff --git a/pp.c b/pp.c
index 72d9dee..84949aa 100644 (file)
--- 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;
index 4ddb12c..dc5e3b6 100644 (file)
--- 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));