diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-09-26 17:24:00 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-09-26 17:24:00 +0000 |
commit | 7f0d337be73bb2465b40009fe23f3b7be6b0dc90 (patch) | |
tree | 68af920515bd71a3c13383fd0dbf864e8dc63b22 | |
parent | 2fa316715f827f3c1cf1426caee7e89fbbe0f607 (diff) |
fallback env encoding to ASCII-8BIT
* hash.c (env_enc_str_new): as no locale/filesystem encoding is
available in miniruby on Windows, fallback the encoding to
ASCII-8BIT so it is valid encoding when the conversion failed.
[ruby-core:89177] [Bug #15164]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | bootstraptest/test_env.rb | 12 | ||||
-rw-r--r-- | hash.c | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/bootstraptest/test_env.rb b/bootstraptest/test_env.rb new file mode 100644 index 0000000000..7d1b45b75e --- /dev/null +++ b/bootstraptest/test_env.rb @@ -0,0 +1,12 @@ +assert_equal "true", %q{ + ENV["ENVTEST"] = "\u{e9 3042 d76c}" + env = ENV["ENVTEST"] + env.valid_encoding? +} + +# different encoding is used for PATH +assert_equal "true", %q{ + ENV["PATH"] = "\u{e9 3042 d76c}" + env = ENV["PATH"] + env.valid_encoding? +} @@ -3360,7 +3360,7 @@ env_enc_str_new(const char *ptr, long len, rb_encoding *enc) rb_encoding *utf8 = rb_utf8_encoding(); VALUE str = rb_enc_str_new(NULL, 0, (internal ? internal : enc)); if (NIL_P(rb_str_cat_conv_enc_opts(str, 0, ptr, len, utf8, ecflags, Qnil))) { - rb_str_initialize(str, ptr, len, utf8); + rb_str_initialize(str, ptr, len, NULL); } #else VALUE str = rb_external_str_new_with_enc(ptr, len, enc); |