djgpp update (from Laszlo Molnar)
[p5sagit/p5-mst-13.2.git] / doop.c
diff --git a/doop.c b/doop.c
index 1b7d02d..0dbfe20 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -1,6 +1,6 @@
 /*    doop.c
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -282,7 +282,7 @@ S_do_trans_CU_simple(pTHX_ SV *sv)
     UV extra = none + 1;
     UV final;
     UV uv;
-    U8 tmpbuf[10];
+    U8 tmpbuf[UTF8_MAXLEN];
     I32 bits = 16;
 
     s = (U8*)SvPV(sv, len);
@@ -719,7 +719,7 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
                if (offset >= srclen)
                    retnum = 0;
                else
-                   retnum = (UV) s[offset] << 8;
+                   retnum = (UV) s[offset] <<  8;
            }
            else if (size == 32) {
                if (offset >= srclen)
@@ -737,7 +737,7 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
                        ((UV) s[offset + 1] << 16) +
                        (     s[offset + 2] <<  8);
            }
-#ifdef HAS_QUAD
+#ifdef UV_IS_QUAD
            else if (size == 64) {
                dTHR;
                if (ckWARN(WARN_PORTABLE))
@@ -786,7 +786,7 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
                        ((UV) s[offset + 3] << 32) +
                        ((UV) s[offset + 4] << 24) +
                        ((UV) s[offset + 5] << 16) +
-                       (     s[offset + 6] << 8);
+                       (     s[offset + 6] <<  8);
            }
 #endif
        }
@@ -799,7 +799,7 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
            retnum = s[offset];
        else if (size == 16)
            retnum =
-               ((UV) s[offset] <<  8) +
+               ((UV) s[offset] <<      8) +
                      s[offset + 1];
        else if (size == 32)
            retnum =
@@ -807,7 +807,7 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
                ((UV) s[offset + 1] << 16) +
                (     s[offset + 2] <<  8) +
                      s[offset + 3];
-#ifdef HAS_QUAD
+#ifdef UV_IS_QUAD
        else if (size == 64) {
            dTHR;
            if (ckWARN(WARN_PORTABLE))
@@ -820,7 +820,7 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
                ((UV) s[offset + 3] << 32) +
                ((UV) s[offset + 4] << 24) +
                ((UV) s[offset + 5] << 16) +
-               (     s[offset + 6] << 8) +
+               (     s[offset + 6] <<  8) +
                      s[offset + 7];
        }
 #endif
@@ -880,7 +880,7 @@ Perl_do_vecset(pTHX_ SV *sv)
            s[offset+2] = (lval >>  8) & 0xff;
            s[offset+3] =  lval        & 0xff;
        }
-#ifdef HAS_QUAD
+#ifdef UV_IS_QUAD
        else if (size == 64) {
            dTHR;
            if (ckWARN(WARN_PORTABLE))
@@ -933,7 +933,7 @@ Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
     s = SvPV(sv, len);
     if (len && !SvPOK(sv))
        s = SvPV_force(sv, len);
-    if (IN_UTF8) {
+    if (DO_UTF8(sv)) {
        if (s && len) {
            char *send = s + len;
            char *start = s;
@@ -946,22 +946,23 @@ Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
            *s = '\0';
            SvCUR_set(sv, s - start);
            SvNIOK_off(sv);
+           SvUTF8_on(astr);
        }
        else
            sv_setpvn(astr, "", 0);
     }
-    else
-    if (s && len) {
+    else if (s && len) {
        s += --len;
        sv_setpvn(astr, s, 1);
        *s = '\0';
        SvCUR_set(sv, len);
+       SvUTF8_off(sv);
        SvNIOK_off(sv);
     }
     else
        sv_setpvn(astr, "", 0);
     SvSETMAGIC(sv);
-} 
+}
 
 I32
 Perl_do_chomp(pTHX_ register SV *sv)