diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-05-07 18:02:32 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-05-07 18:02:32 +0900 |
| commit | 4f1f243fe7e34acf6249d32cc68eedc8ff5bccbf (patch) | |
| tree | 5c00b7517c1bd2aa5b072d04914847a6ab040a33 | |
| parent | 9bed29bf966223c9da792ca2590f8a9a6fd3bf2f (diff) | |
| download | mruby-4f1f243fe7e34acf6249d32cc68eedc8ff5bccbf.tar.gz mruby-4f1f243fe7e34acf6249d32cc68eedc8ff5bccbf.zip | |
initialize_copy: copy destination object may not be intialized
| -rw-r--r-- | src/time.c | 4 | ||||
| -rw-r--r-- | test/test_time.rb | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/time.c b/src/time.c index 16884d9d8..ed42f1f76 100644 --- a/src/time.c +++ b/src/time.c @@ -496,6 +496,10 @@ mrb_time_initialize_copy(mrb_state *mrb, mrb_value copy) if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) { mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class"); } + if (!DATA_PTR(copy)) { + DATA_PTR(copy) = mrb_malloc(mrb, sizeof(struct mrb_time)); + DATA_TYPE(copy) = &mrb_time_type; + } memcpy(DATA_PTR(copy), DATA_PTR(src), sizeof(struct mrb_time)); return copy; } diff --git a/test/test_time.rb b/test/test_time.rb index 79d658e1b..ea6e98696 100644 --- a/test/test_time.rb +++ b/test/test_time.rb @@ -43,7 +43,6 @@ assert("yday") { t1.yday == 71 } assert("year") { t1.year == 2011 } t2 = Time.at(7.0e6) -t1.initialize_copy(t2) -assert("initialize_copy") { t1 == t2 } +assert("initialize_copy") { t2.clone == t2 } report() |
