diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-18 10:39:41 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-18 10:39:41 +0000 |
commit | 8705e3623cb8b68d81b72a697ce20b957c9e7fcf (patch) | |
tree | 2e95aed34868f7d90b70789777661cba6ce01f67 /numeric.c | |
parent | 3f0ec8887f3bc75a98fd3ec8926518b635c70b7b (diff) | |
download | ruby-8705e3623cb8b68d81b72a697ce20b957c9e7fcf.tar.gz |
* numeric.c (num_sadded): remove newly defined singleton method
that should not exist after exception handling. [ruby-dev:36569]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'numeric.c')
-rw-r--r-- | numeric.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -202,11 +202,13 @@ rb_num_coerce_relop(VALUE x, VALUE y, ID func) static VALUE num_sadded(VALUE x, VALUE name) { + const char *nstr = rb_id2name(rb_to_id(name)); /* ruby_frame = ruby_frame->prev; */ /* pop frame for "singleton_method_added" */ /* Numerics should be values; singleton_methods should not be added to them */ + rb_remove_method(rb_singleton_class(x), nstr); rb_raise(rb_eTypeError, "can't define singleton method \"%s\" for %s", - rb_id2name(rb_to_id(name)), + nstr, rb_obj_classname(x)); return Qnil; /* not reached */ } |