summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/date/date_core.c4
-rw-r--r--test/date/test_date_marshal.rb7
2 files changed, 9 insertions, 2 deletions
diff --git a/ext/date/date_core.c b/ext/date/date_core.c
index e44dcc15e2..8c5d280d1d 100644
--- a/ext/date/date_core.c
+++ b/ext/date/date_core.c
@@ -9318,7 +9318,7 @@ Init_date_core(void)
*/
rb_define_const(cDate, "GREGORIAN", DBL2NUM(GREGORIAN));
- rb_define_alloc_func(cDate, d_lite_s_alloc_simple);
+ rb_define_alloc_func(cDate, d_lite_s_alloc_complex);
#ifndef NDEBUG
rb_define_private_method(CLASS_OF(cDate), "_valid_jd?",
@@ -9368,6 +9368,7 @@ Init_date_core(void)
rb_define_singleton_method(cDate, "jd", date_s_jd, -1);
rb_define_singleton_method(cDate, "ordinal", date_s_ordinal, -1);
rb_define_singleton_method(cDate, "civil", date_s_civil, -1);
+ rb_define_singleton_method(cDate, "new", date_s_civil, -1);
rb_define_singleton_method(cDate, "commercial", date_s_commercial, -1);
#ifndef NDEBUG
@@ -9395,7 +9396,6 @@ Init_date_core(void)
rb_define_singleton_method(cDate, "_jisx0301", date_s__jisx0301, 1);
rb_define_singleton_method(cDate, "jisx0301", date_s_jisx0301, -1);
- rb_define_method(cDate, "initialize", date_initialize, -1);
rb_define_method(cDate, "initialize_copy", d_lite_initialize_copy, 1);
#ifndef NDEBUG
diff --git a/test/date/test_date_marshal.rb b/test/date/test_date_marshal.rb
index c7ce737aac..fa8b2d91f8 100644
--- a/test/date/test_date_marshal.rb
+++ b/test/date/test_date_marshal.rb
@@ -39,6 +39,13 @@ class TestDateMarshal < Test::Unit::TestCase
assert(d.frozen?)
expected_error = defined?(FrozenError) ? FrozenError : RuntimeError
assert_raise(expected_error){d.marshal_load(a)}
+
+ d = Date.new + 1/2r + 2304/65437r/86400
+ m = Marshal.dump(d)
+ d2 = Marshal.load(m)
+ assert_equal(d, d2)
+ assert_equal(d.start, d2.start)
+ assert_instance_of(String, d2.to_s)
end
def test_memsize