[#44925] [Backport93 - Backport #5702][Open] backport r33935 — Yusuke Endoh <mame@...>

19 messages 2011/12/03

[#44940] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — Tanaka Akira <akr@...>

2011/12/6 <naruse@ruby-lang.org>:

9 messages 2011/12/05
[#44941] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — KOSAKI Motohiro <kosaki.motohiro@...> 2011/12/05

2011年12月5日16:56 Tanaka Akira <akr@fsij.org>:

[#44942] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — KOSAKI Motohiro <kosaki.motohiro@...> 2011/12/05

> おかしいな。gdbmは勝手にcreateフラグを立ててしまうので当該2つの

[#44985] [ruby-trunk - Bug #5757][Open] main threadがreadやselectで待っていると、^C でなかなか死なない — Yui NARUSE <naruse@...>

12 messages 2011/12/13

[#45021] [ruby-trunk - Bug #5786][Open] LoadError: cannot load such file -- openssl — Kazuhiro NISHIYAMA <redmine@...>

11 messages 2011/12/21

[#45057] [ruby-trunk - Feature #5820][Assigned] Merge Onigmo to Ruby 2.0 — Yui NARUSE <naruse@...>

21 messages 2011/12/28

[ruby-dev:44953] Re: [ruby-trunk - Bug #5725][Assigned] Coverage doesn't honor file path encodings

From: Yusuke Endoh <mame@...>
Date: 2011-12-08 11:40:04 UTC
List: ruby-dev #44953
遠藤です。

2011/12/8, Shyouhei Urabe <shyouhei@ruby-lang.org>:
> 以下のように、カバレッジの出力がファイルパスのエンコーディングを無視しています。
> これのせいでsimplecovがこけて気づきました。


ありがとうございます。
この問題は、ありそうな予感はしていたのですが気がつかなかったことに
していました。

とりあえず rb_filesystem_encoding() の String インスタンスを作る
ようにするパッチ (__FILE__ でも取られている手) を書いてみましたが、
M17N はよくわからないので、成瀬さんのご意見を聞きたいです。


diff --git a/parse.y b/parse.y
index 3061ed8..b2081a0 100644
--- a/parse.y
+++ b/parse.y
@@ -5167,7 +5167,7 @@ coverage(const char *f, int n)
 {
     VALUE coverages = rb_get_coverages();
     if (RTEST(coverages) && RBASIC(coverages)->klass == 0) {
-	VALUE fname = rb_str_new2(f);
+	VALUE fname = rb_external_str_new_with_enc(f, strlen(f),
rb_filesystem_encoding());
 	VALUE lines = rb_ary_new2(n);
 	int i;
 	RBASIC(lines)->klass = 0;


そもそもの原因は、parse.y や load.c や eval 回りを中心にコア内部の
色んなところでソースファイル名が char * として扱われている事なので、
根本的な対策としては、ファイル名を片っ端から String インスタンスに
置き換えていくことだと思いますが、公開 API まで巻き込んだ大規模な
修正になるような気がします。

-- 
Yusuke Endoh <mame@tsg.ne.jp>

In This Thread