[#44757] [ruby-trunk - Bug #5533][Assigned] Pathname's raising "invalid sequence" — Shyouhei Urabe <shyouhei@...>
5 messages
2011/11/01
[#44775] [ruby-trunk - Feature #5549][Open] Comparable#min, Comparable#max — Tsuyoshi Sawada <sawadatsuyoshi@...>
4 messages
2011/11/02
[#44796] [Backport93 - Backport #5565][Open] STDOUT.puts writes LF (not CR+LF) in textmode — Usaku NAKAMURA <redmine@...>
6 messages
2011/11/03
[#44800] [ruby-trunk - Bug #5576][Open] [Universal Newline]改行コードが"\r\n"で出力されない — pegacorn jp <subscriber.jp+ruby-redmine@...>
8 messages
2011/11/06
[#44817] [ruby-trunk - Feature #5584][Open] Array#sample! — Masaki Matsushita <glass.saga@...>
12 messages
2011/11/07
[#44837] [ruby-trunk - Bug #5593][Open] Windows上で \\.\ から始まるデバイスをopenするとクラッシュ — 宗介 相良 <snowjail@...>
5 messages
2011/11/08
[#44850] [ruby-trunk - Feature #5606][Open] String#each_match(regexp) — Tomoaki Nishiyama <tomoakin@...>
5 messages
2011/11/10
[#44853] [ruby-trunk - Bug #5608][Open] make -j 16 sometimes fail — Tomoaki Nishiyama <tomoakin@...>
5 messages
2011/11/10
[#44870] Re: [ruby-cvs:40906] kosaki:r33728 (trunk): * test/ruby/test_io.rb (test_fcntl_dupfd): skip if Fcntl::DUPFD — Tanaka Akira <akr@...>
2011/11/13 <kosaki@ruby-lang.org>:
3 messages
2011/11/14
[#44899] Re: [ruby-cvs:41015] kosaki:r33837 (trunk): * configure.in: turn on PIE if --enable-shared is not specified. — Tanaka Akira <akr@...>
2011/11/25 <kosaki@ruby-lang.org>:
3 messages
2011/11/27
[#44904] [ruby-trunk - Bug #5688][Open] Solaris10 で spawn を繰り返すとメモリリークする — okkez _ <redmine@...>
14 messages
2011/11/29
[#44922] [ruby-trunk - Bug #5688] Solaris10 で spawn を繰り返すとメモリリークする
— okkez _ <redmine@...>
2011/12/02
[#44906] [ruby-trunk - Bug #5689][Open] class variables inside of instance methods inside of "class_eval" — Shyouhei Urabe <shyouhei@...>
5 messages
2011/11/30
[ruby-dev:44827] [ruby-trunk - Bug #5586][Open] Time.at(Marshal.load(Marshal.dump(Time.now))).to_s raise TypeError
From:
Tomoyuki Chikanaga <nagachika00@...>
Date:
2011-11-07 15:42:25 UTC
List:
ruby-dev #44827
Issue #5586 has been reported by Tomoyuki Chikanaga.
----------------------------------------
Bug #5586: Time.at(Marshal.load(Marshal.dump(Time.now))).to_s raise TypeError
http://redmine.ruby-lang.org/issues/5586
Author: Tomoyuki Chikanaga
Status: Open
Priority: Normal
Assignee:
Category: core
Target version:
ruby -v: ruby 2.0.0dev (2011-11-07 trunk 33656) [x86_64-darwin10.8.0]
以下のコードが TypeError を発生させます。なお 1.9.2-p312 でも発生しました。
Time.at(Marshal.load(Marshal.dump(Time.now))).to_s
# => TypeError: false can't be coerced into Fixnum
Time オブジェクトを Marshal.dump -> load すると TIME_SET_FIXOFF() で
struct time_object の gmt と vtm.utc_offset がセットされるのですが
それを Time.at に渡すと gmt だけコピーされて vtm.utc_offset が (VALUE)0 = Qfalse のままだからのようです。
どこが根本的な原因なのかよくわかりませんが、以下のパッチで例外はおきなくなりました。
るりまの Time.at(time) のページ( http://rurema.clear-code.com/1.9.3/method/Time/s/at.html )を見ると
「生成された Time オブジェクトのタイムゾーンは地方時となります。」とあるので TIME_GMT_COPY() 自体が
不要なのかもしれないと思いますがどうでしょう。
diff --git a/time.c b/time.c
index 3e50c7c..96b717b 100644
--- a/time.c
+++ b/time.c
@@ -1820,7 +1820,10 @@ struct time_object {
(tobj)->vtm.utc_offset = (off), \
(tobj)->vtm.zone = NULL)
-#define TIME_COPY_GMT(tobj1, tobj2) ((tobj1)->gmt = (tobj2)->gmt)
+#define TIME_COPY_GMT(tobj1, tobj2) \
+ ((tobj1)->gmt = (tobj2)->gmt, \
+ (tobj1)->vtm.utc_offset = (tobj2)->vtm.utc_offset, \
+ (tobj1)->vtm.zone = (tobj2)->vtm.zone)
static VALUE time_get_tm(VALUE, struct time_object *);
#define MAKE_TM(time, tobj) \
--
http://redmine.ruby-lang.org