Project

General

Profile

Bug #1614

startup failure with non-ascii path

Added by nobu (Nobuyoshi Nakada) over 11 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.9.2dev (2009-06-12) [i386-mswin32_90]
Backport:
[ruby-dev:38594]

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

#1

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r23670.
=end

#2

Updated by nobu (Nobuyoshi Nakada) over 11 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

#3

Updated by wanabe (_ wanabe) over 11 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

#4

Updated by yugui (Yuki Sonoda) over 11 years ago

  • Target version changed from 2.0.0 to 1.9.2

=begin

=end

#5

Updated by yugui (Yuki Sonoda) over 11 years ago

  • Assignee set to nobu (Nobuyoshi Nakada)

=begin
applied in a changeset.
=end

#6

Updated by naruse (Yui NARUSE) almost 11 years ago

  • Status changed from Open to Closed

=begin

=end

Also available in: Atom PDF