aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-10 14:53:26 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-10 14:53:26 +0000
commit098a5639355b11697159ab916f67b53b43088a8b (patch)
treefab1038d62c1dd6a6eeedb7a8e6a68c1b0a4ae1c
parentc585a9eba193379ca18f7e80f30af2a7552e97c1 (diff)
downloadruby-098a5639355b11697159ab916f67b53b43088a8b.tar.gz
* string.c (tr_trans): cast to unsigned char after dereference
a pointer to a char to avoid SEGV with "\377".tr("a", "b"). on FreeBSD/amd64. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--string.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 1543907c3f..563199b1ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sat Nov 10 23:50:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (tr_trans): cast to unsigned char after dereference
+ a pointer to a char to avoid SEGV with "\377".tr("a", "b").
+ on FreeBSD/amd64.
+
Sat Nov 10 23:08:53 2007 Tanaka Akira <akr@fsij.org>
* configure.in, common.mk, Makefile.in: don't generate
diff --git a/string.c b/string.c
index 07ccf897c7..4ff50a776d 100644
--- a/string.c
+++ b/string.c
@@ -3475,7 +3475,7 @@ tr_trans(VALUE str, VALUE src, VALUE repl, int sflag)
}
else if (rb_enc_mbmaxlen(enc) == 1) {
while (s < send) {
- c = *s;
+ c = (unsigned char)*s;
if (trans[c] >= 0) {
if (!cflag) {
c = FIX2INT(trans[c]);