diff --git a/lib/git/escaped_path.rb b/lib/git/escaped_path.rb index 7519a3ac..73e4f175 100644 --- a/lib/git/escaped_path.rb +++ b/lib/git/escaped_path.rb @@ -42,7 +42,7 @@ def unescape private def extract_octal(path, index) - [path[index + 1..index + 4].to_i(8), 4] + [path[index + 1..index + 3].to_i(8), 4] end def extract_escape(path, index) diff --git a/tests/units/test_escaped_path.rb b/tests/units/test_escaped_path.rb index 38230e4f..2814004c 100755 --- a/tests/units/test_escaped_path.rb +++ b/tests/units/test_escaped_path.rb @@ -21,6 +21,12 @@ def test_unicode_path assert_equal(expected_unescaped_path, Git::EscapedPath.new(path).unescape) end + def test_unicode_path2 + path = 'test\320\2411991923' + expected_unescaped_path = 'testД1991923' + assert_equal(expected_unescaped_path, Git::EscapedPath.new(path).unescape) + end + def test_single_char_escapes Git::EscapedPath::UNESCAPES.each_pair do |escape_char, expected_char| path = "\\#{escape_char}"