зеркало из https://github.com/github/ruby.git
dir.c: fix escaping multibyte char
* dir.c (has_magic): fix escaping multibyte char, with glob meta-char in trailing bytes, e.g., Shift-JIS git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
6548425ee0
Коммит
461c38a973
6
dir.c
6
dir.c
|
@ -1205,9 +1205,9 @@ has_magic(const char *p, const char *pend, int flags, rb_encoding *enc)
|
|||
return MAGICAL;
|
||||
|
||||
case '\\':
|
||||
if (escape && !(c = *p++))
|
||||
return PLAIN;
|
||||
continue;
|
||||
if (escape && p++ >= pend)
|
||||
continue;
|
||||
break;
|
||||
|
||||
#ifdef _WIN32
|
||||
case '~':
|
||||
|
|
|
@ -352,6 +352,16 @@ class TestDir_M17N < Test::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_glob_escape_multibyte
|
||||
name = "\x81\\".force_encoding(Encoding::Shift_JIS)
|
||||
with_tmpdir do
|
||||
open(name, "w") {} rescue next
|
||||
match, = Dir.glob("#{name}*")
|
||||
next unless match and match.encoding == Encoding::Shift_JIS
|
||||
assert_equal([name], Dir.glob("\\#{name}*"))
|
||||
end
|
||||
end
|
||||
|
||||
def test_entries_compose
|
||||
bug7267 = '[ruby-core:48745] [Bug #7267]'
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче