From 5675cdbd418509bdb1abbc4442a681b808ed35e8 Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 3 Feb 2006 09:15:42 +0000 Subject: * eval.c: unify ruby_class (for method definition) and ruby_cbase (for constant reference). * eval.c (rb_call0): use TMP_ALLOC() instead of allocating a temporary array object. * eval.c (eval): need not to protect $SAFE value. [ruby-core:07177] * error.c (Init_Exception): change NameError to direct subclass of Exception so that default rescue do not handle it silently. * struct.c (rb_struct_select): update RDoc description. [ruby-core:7254] * numeric.c (int_upto): return an enumerator if no block is attached to the method. * numeric.c (int_downto): ditto. * numeric.c (int_dotimes): ditto. * enum.c (enum_first): new method Enumerable#first to take first n element from an enumerable. * enum.c (enum_group_by): new method Enumerable#group_by that groups enumerable values according to their block values. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/dbm/dbm.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'ext/dbm') diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index 5573cb415d..6e03e0eeeb 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -426,20 +426,10 @@ fdbm_invert(obj) return hash; } -static VALUE each_pair _((VALUE)); +static VALUE fdbm_store(VALUE,VALUE,VALUE); static VALUE -each_pair(obj) - VALUE obj; -{ - return rb_funcall(obj, rb_intern("each_pair"), 0, 0); -} - -static VALUE fdbm_store _((VALUE,VALUE,VALUE)); - -static VALUE -update_i(pair, dbm) - VALUE pair, dbm; +update_i(VALUE pair, VALUE dbm) { Check_Type(pair, T_ARRAY); if (RARRAY(pair)->len < 2) { @@ -450,19 +440,17 @@ update_i(pair, dbm) } static VALUE -fdbm_update(obj, other) - VALUE obj, other; +fdbm_update(VALUE obj, VALUE other) { - rb_iterate(each_pair, other, update_i, obj); + rb_block_call(other, rb_intern("each_pair"), 0, 0, update_i, obj); return obj; } static VALUE -fdbm_replace(obj, other) - VALUE obj, other; +fdbm_replace(VALUE obj, VALUE other) { fdbm_clear(obj); - rb_iterate(each_pair, other, update_i, obj); + rb_block_call(other, rb_intern("each_pair"), 0, 0, update_i, obj); return obj; } -- cgit v1.2.3