perl 5.002beta2 patch: doop.c
Perl 5 Porters [Fri, 12 Jan 1996 02:05:04 +0000 (02:05 +0000)]
Chip's patch to use STDCHAR and U8 nearly everywhere instead of
assuming 8-bit chars or ~(char) 0 == 0xff.

doop.c

diff --git a/doop.c b/doop.c
index d861599..7f00f04 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -32,22 +32,22 @@ SV *sv;
 OP *arg;
 {
     register short *tbl;
-    register char *s;
-    register I32 matches = 0;
+    register U8 *s;
+    register U8 *send;
+    register U8 *d;
     register I32 ch;
-    register char *send;
-    register char *d;
+    register I32 matches = 0;
     register I32 squash = op->op_private & OPpTRANS_SQUASH;
     STRLEN len;
 
     if (SvREADONLY(sv))
        croak(no_modify);
-    tbl = (short*) cPVOP->op_pv;
-    s = SvPV(sv, len);
+    tbl = (short*)cPVOP->op_pv;
+    s = (U8*)SvPV(sv, len);
     if (!len)
        return 0;
     if (!SvPOKp(sv))
-       s = SvPV_force(sv, len);
+       s = (U8*)SvPV_force(sv, len);
     (void)SvPOK_only(sv);
     send = s + len;
     if (!tbl || !s)
@@ -55,7 +55,7 @@ OP *arg;
     DEBUG_t( deb("2.TBL\n"));
     if (!op->op_private) {
        while (s < send) {
-           if ((ch = tbl[*s & 0377]) >= 0) {
+           if ((ch = tbl[*s]) >= 0) {
                matches++;
                *s = ch;
            }
@@ -65,7 +65,7 @@ OP *arg;
     else {
        d = s;
        while (s < send) {
-           if ((ch = tbl[*s & 0377]) >= 0) {
+           if ((ch = tbl[*s]) >= 0) {
                *d = ch;
                if (matches++ && squash) {
                    if (d[-1] == *d)
@@ -82,7 +82,7 @@ OP *arg;
        }
        matches += send - d;    /* account for disappeared chars */
        *d = '\0';
-       SvCUR_set(sv, d - SvPVX(sv));
+       SvCUR_set(sv, d - (U8*)SvPVX(sv));
     }
     SvSETMAGIC(sv);
     return matches;