Bug #282
closedfailure of test_asctime(TestTime) on mswin32
Description
=begin
表題の通りですが、忘れないように記録に残しておきます。
test_asctime(TestTime) [(snip)/test/ruby/test_time.rb:291]:
<"Sat Jan 1 00:00:00 2000"> expected but was
<"Sat Jan 01 00:00:00 2000">.
C90を読む限りは日付の部分は月名部分に続けて "%3d" なので、MSVCRTのバグです。
しかしわざわざ対策すべきかどうかは微妙。
=end
Updated by wanabe (_ wanabe) over 16 years ago
=begin
ワナベです。
2008/08/12 20:56 木村浩一 kbk@kt.rim.or.jp:
・_WIN32というシンボルは対象が広すぎ(MSVCRTを使わないものも含む)
・MSVCRTのバグに対する workaround ということを明確にすべきと思います。
後者はコメントをつけるなり、いかにもという名前で判定するなり。
なるほど。そうしますとどうするのがいいのでしょう。
#if defined(MSVCRT) || defined(_MSC_VER)
という式を考えたのですが、わかりやすい(後者を満たしている)とは思えません。
何かほかの定数や configure の結果などを使ってうまくできないものでしょうか。
--
ワナベ
=end
Updated by wanabe (_ wanabe) over 16 years ago
=begin
ワナベと申します。
2008/07/17 6:59 Usaku NAKAMURA redmine@ruby-lang.org:
test_asctime(TestTime) [(snip)/test/ruby/test_time.rb:291]:
<"Sat Jan 1 00:00:00 2000"> expected but was
<"Sat Jan 01 00:00:00 2000">.C90を読む限りは日付の部分は月名部分に続けて "%3d" なので、MSVCRTのバグです。
しかしわざわざ対策すべきかどうかは微妙。
単純にこんな風に対応してしまうのは駄目なのでしょうか。
テストが毎回失敗するのは何だか気になります。
Index: time.c¶
--- time.c (revision 18359)
+++ time.c (working copy)
@@ -1339,6 +1339,9 @@
}
s = asctime(&tobj->tm);
if (s[24] == '\n') s[24] = '\0';
+#ifdef _WIN32
-
if (s[7] == ' ' && s[8] == '0') s[8] = ' ';
+#endifreturn rb_str_new2(s);
}
--
ワナベ
=end
Updated by usa (Usaku NAKAMURA) about 16 years ago
=begin
こんにちは、なかむら(う)です。
なぜか反応が遅くなってしまいましたが、
In message "[ruby-dev:35849] Re: [Ruby 1.9 - Bug #282] (Open) failure of test_asctime(TestTime) on mswin32"
on Aug.14,2008 01:43:49, kbk@kt.rim.or.jp wrote:
#if (defined _MT || defined MSVCRT) && !defined BORLANDC
#define MSVCRT_THREADS
#endifこのパターンと同様に config.h あたりで
#define AVOID_MSVCRT_BUG
という定義をしてしまうとか。
config.h を作るときにいろいろほかにも小さなプログラムを作りながら
検査していますので、この問題のチェックのためのステップを入れても
いいと思いますがどうでしょうか(やる場合の話として)。
ここまでやるほどのことかなあ、と思ったので、
でも
#if defined(MSVCRT) || defined(_MSC_VER)
で判定しておいて、きちんとコメントをつけておくだけでいいという気もします。
その程度でお茶を濁してcommitしました。
お二人ともいろいろありがとうございました。
ところで問題になっているこの挙動は、msvcr[789].dll でも同様なんでしょうか?
全部同じです。
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by usa (Usaku NAKAMURA) about 16 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r18871.
=end