summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--dir.c4
2 files changed, 12 insertions, 0 deletions
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 <naruse@ruby-lang.org>
+
+ * 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 <naruse@ruby-lang.org>
* 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;