Bug #1614
closedstartup failure with non-ascii path
Description
=begin
なかだです。
http://d.hatena.ne.jp/mirichi/20090611/p1 のように、実行ファイル
のパスにnon-ascii文字が含まれているとencdbのロードの際に失敗して
起動できません。
$ q=あ
$ mkdir $q
$ ln libruby.1.9.1.* ruby $q
$ DYLD_LIBRARY_PATH="$q" $q/ruby
internal:prelude:3:in require': incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError) from <internal:prelude>:3:in
block in '
from internal:prelude:1:in each' from <internal:prelude>:1:in
'
file_expand_path()で絶対パスをコピーするときにencodingをコピーし
ていないようです。
Index: file.c
--- file.c (revision 23669)
+++ file.c (working copy)
@@ -2794,4 +2794,5 @@ file_expand_path(VALUE fname, VALUE dnam
BUFCHECK(bdiff >= buflen);
memset(buf, '/', p - buf);
- rb_enc_copy(result, fname);
}
if (p > buf && p[-1] == '/')
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
=end
Updated by nobu (Nobuyoshi Nakada) over 15 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r23670.
=end
Updated by nobu (Nobuyoshi Nakada) over 15 years ago
- Category set to core
- Status changed from Closed to Open
- Target version set to 2.0.0
- ruby -v set to ruby 1.9.2dev (2009-06-12) [i386-mswin32_90]
=begin
=end
Updated by wanabe (_ wanabe) over 15 years ago
=begin
ワナベと申します。
2009/06/12 14:51 に Nobuyoshi Nakadanobu@ruby-lang.org さんは書きました:
なかだです。
http://d.hatena.ne.jp/mirichi/20090611/p1 のように、実行ファイル
のパスにnon-ascii文字が含まれているとencdbのロードの際に失敗して
起動できません。
(中略)
file_expand_path()で絶対パスをコピーするときにencodingをコピーし
ていないようです。Index: file.c¶
--- file.c (revision 23669)
+++ file.c (working copy)
@@ -2794,4 +2794,5 @@ file_expand_path(VALUE fname, VALUE dnam
BUFCHECK(bdiff >= buflen);
memset(buf, '/', p - buf);
}rb_enc_copy(result, fname);
if (p > buf && p[-1] == '/')
エンコーディングのことは全くわからないのですが、もしかしたら同関数中の
/* skip drive letter */ の部分でも同様の処理が必要になるのではないでしょうか。
--
ワナベ
=end
Updated by yugui (Yuki Sonoda) over 15 years ago
- Target version changed from 2.0.0 to 1.9.2
=begin
=end
Updated by yugui (Yuki Sonoda) over 15 years ago
- Assignee set to nobu (Nobuyoshi Nakada)
=begin
applied in a changeset.
=end