Hideki IWAMOTO writes:
authorEric Andersen <andersen@codepoet.org>
Fri, 12 Mar 2004 22:10:40 +0000 (22:10 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 12 Mar 2004 22:10:40 +0000 (22:10 -0000)
Current `tr' implementation has a problem, if `plain char' is signed.

[current cvs version]

>echo a | _install/usr/bin/tr '\0' '\377'
Segmentation fault (core dumped)

[patched version]

>echo a | _install/usr/bin/tr '\0' '\377'
a

coreutils/tr.c

index 4e69dc8..958fc80 100644 (file)
@@ -202,9 +202,9 @@ extern int tr_main(int argc, char **argv)
                        map(input, input_length, output, output_length);
                }
                for (i = 0; i < input_length; i++)
-                       invec[(int)input[i]] = TRUE;
+                       invec[(unsigned char)input[i]] = TRUE;
                for (i = 0; i < output_length; i++)
-                       outvec[(int)output[i]] = TRUE;
+                       outvec[(unsigned char)output[i]] = TRUE;
        }
        convert();
        return (0);