--- dir.c 2013-02-22 18:46:41.000000000 +0900 +++ dir.new.c 2013-02-22 18:46:08.000000000 +0900 @@ -2010,6 +2010,7 @@ VALUE pattern, path; VALUE rflags; int flags; + rb_encoding *enc; if (rb_scan_args(argc, argv, "21", &pattern, &path, &rflags) == 3) flags = NUM2INT(rflags); @@ -2018,6 +2019,7 @@ StringValue(pattern); FilePathStringValue(path); + enc = rb_enc_check(pattern, path); if (flags & FNM_EXTGLOB) { struct brace_args args; @@ -2025,12 +2027,11 @@ args.value = path; args.flags = flags; if (ruby_brace_expand(RSTRING_PTR(pattern), flags, fnmatch_brace, - (VALUE)&args, rb_enc_get(pattern)) > 0) + (VALUE)&args, enc) > 0) return Qtrue; } else { - if (fnmatch(RSTRING_PTR(pattern), rb_enc_get(pattern), RSTRING_PTR(path), - flags) == 0) + if (fnmatch(RSTRING_PTR(pattern), enc, RSTRING_PTR(path), flags) == 0) return Qtrue; } RB_GC_GUARD(pattern);