summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-08-04 02:54:32 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-08-04 02:54:32 +0000
commit9e1b9b9c8f1bd72315466e66176559de58552e16 (patch)
tree2d300ddafe848ca7f9c4d7b967e699059c43059c
parent18cf70ebf636b9754760b12961bebb125af6ec39 (diff)
hash.c: set encoding
* hash.c (env_assoc): the encoding of the value should be the locale, as well as other methods, [], fetch, values, etc. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--hash.c2
-rw-r--r--test/ruby/test_env.rb2
3 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 132a230..762f61e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Aug 4 11:54:30 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (env_assoc): the encoding of the value should be the
+ locale, as well as other methods, [], fetch, values, etc.
+
Wed Aug 3 21:31:23 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (reg_fragment_enc_error): compile_error is different
diff --git a/hash.c b/hash.c
index 963d9ae..d6bfc8a 100644
--- a/hash.c
+++ b/hash.c
@@ -3899,7 +3899,7 @@ env_assoc(VALUE env, VALUE key)
s = env_name(key);
e = getenv(s);
- if (e) return rb_assoc_new(key, rb_tainted_str_new2(e));
+ if (e) return rb_assoc_new(key, env_str_new2(e));
return Qnil;
}
diff --git a/test/ruby/test_env.rb b/test/ruby/test_env.rb
index 17323cc..77e8386 100644
--- a/test/ruby/test_env.rb
+++ b/test/ruby/test_env.rb
@@ -319,6 +319,8 @@ class TestEnv < Test::Unit::TestCase
assert_equal("foo", v)
end
assert_invalid_env {|var| ENV.assoc(var)}
+ assert_predicate(v, :tainted?)
+ assert_equal(Encoding.find("locale"), v.encoding)
end
def test_has_value2