From 3337c792e692f1c80ecb5df3eafd9d02f4364445 Mon Sep 17 00:00:00 2001 From: naruse Date: Fri, 22 Aug 2008 03:32:13 +0000 Subject: [PATCH] * dir.c (dir_enc_str_new): set US-ASCII to the path when the path is 7bit string and encoding is ASCII compatible. * dir.c (push_glob): set file system encoding when argument encoding is US-ASCII. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ dir.c | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 05e115af8b..c6933f2315 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Fri Aug 22 11:36:31 2008 NARUSE, Yui + + * dir.c (dir_enc_str_new): set US-ASCII to the path + when the path is 7bit string and encoding is ASCII compatible. + + * dir.c (push_glob): set file system encoding when argument encoding + is US-ASCII. + Fri Aug 22 11:30:38 2008 NARUSE, Yui * dir.c (dir_enc_str_new): renamed from dir_enc_str. diff --git a/dir.c b/dir.c index 34c4024fd8..9e55165a2f 100644 --- a/dir.c +++ b/dir.c @@ -427,6 +427,9 @@ static VALUE dir_enc_str_new(const char *p, long len, rb_encoding *enc) { VALUE path = rb_tainted_str_new(p, len); + if (rb_enc_asciicompat(enc) && rb_enc_str_asciionly_p(path)) { + enc = rb_usascii_encoding(); + } rb_enc_associate(path, enc); return path; } @@ -1533,6 +1536,7 @@ push_glob(VALUE ary, VALUE str, int flags) struct glob_args args; rb_encoding *enc = rb_enc_get(str); + if (enc == rb_usascii_encoding()) enc = rb_filesystem_encoding(); args.func = push_pattern; args.value = ary; args.enc = enc;