diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-03 16:31:25 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-03 16:31:25 +0000 |
commit | 1348e3b9ac686433047b30689159f0e5bc3279dc (patch) | |
tree | 6c815667448c8d2ba11661364c567c5433c1a8c6 /lib/rdoc/parser.rb | |
parent | 19be9a8d80bb170b9189c997af90329e7e7af92c (diff) |
rdoc: non-binary multibyte
* lib/rdoc/parser.rb (RDoc.binary?): binary read data may have
incomplete multibyte sequence. [ruby-core:44798][Bug #6393]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc/parser.rb')
-rw-r--r-- | lib/rdoc/parser.rb | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb index 27267f3d81..9cc1485422 100644 --- a/lib/rdoc/parser.rb +++ b/lib/rdoc/parser.rb @@ -80,14 +80,14 @@ class RDoc::Parser have_encoding = s.respond_to? :encoding - if have_encoding then - return false if s.encoding != Encoding::ASCII_8BIT and s.valid_encoding? - end - return true if s[0, 2] == Marshal.dump('')[0, 2] or s.index("\x00") if have_encoding then - s.force_encoding Encoding.default_external + mode = "r" + s.sub!(/\A#!.*\n/, '') # assume shebang line isn't longer than 1024. + encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*\([^\s;]+?\)(?:-\*-)?/, 1] + mode = "r:#{encoding}" if encoding + s = File.open(file, mode) {|f| f.gets(nil, 1024)} not s.valid_encoding? else |