From 1a4e6e9708b4cdc426ebd1226a7f10f8e4259b75 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 23 Feb 2000 05:23:12 +0000 Subject: 2000-02-23 git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@624 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'eval.c') diff --git a/eval.c b/eval.c index b913680eb..d7895453a 100644 --- a/eval.c +++ b/eval.c @@ -5957,6 +5957,21 @@ rb_obj_method(obj, vid) return method; } +static VALUE +method_clone(self) + VALUE self; +{ + VALUE clone; + struct METHOD *orig, *data; + + Data_Get_Struct(self, struct METHOD, orig); + clone = Data_Make_Struct(rb_cMethod,struct METHOD,bm_mark,free,data); + CLONESETUP(clone, self); + *data = *orig; + + return clone; +} + static VALUE method_call(argc, argv, method) int argc; @@ -6094,6 +6109,7 @@ Init_Proc() rb_cMethod = rb_define_class("Method", rb_cObject); rb_undef_method(CLASS_OF(rb_cMethod), "new"); + rb_define_method(rb_cMethod, "clone", method_clone, 0); rb_define_method(rb_cMethod, "call", method_call, -1); rb_define_method(rb_cMethod, "[]", method_call, -1); rb_define_method(rb_cMethod, "arity", method_arity, 0); -- cgit