@@ -194,15 +194,19 @@ static VALUE rb_git_walker_simplify_first_parent(VALUE self)
194
194
* call-seq:
195
195
* walker.count -> Fixnum
196
196
*
197
- * Returns the amount of objects a walker iterated over.
197
+ * Returns the amount of objects a walker iterated over. If an argument or
198
+ * block is given this method delegates to +Enumerable#count+.
198
199
*/
199
- static VALUE rb_git_walker_count (VALUE self )
200
+ static VALUE rb_git_walker_count (int argc , VALUE * argv , VALUE self )
200
201
{
201
202
git_revwalk * walk ;
202
203
git_oid commit_oid ;
203
204
int error = 0 ;
204
205
uint64_t count = 0 ;
205
206
207
+ if (argc > 0 || rb_block_given_p ())
208
+ return rb_call_super (argc , argv );
209
+
206
210
Data_Get_Struct (self , git_revwalk , walk );
207
211
208
212
while (((error = git_revwalk_next (& commit_oid , walk )) == 0 ) && ++ count != UINT64_MAX );
@@ -515,5 +519,5 @@ void Init_rugged_revwalk(void)
515
519
rb_define_method (rb_cRuggedWalker , "reset" , rb_git_walker_reset , 0 );
516
520
rb_define_method (rb_cRuggedWalker , "sorting" , rb_git_walker_sorting , 1 );
517
521
rb_define_method (rb_cRuggedWalker , "simplify_first_parent" , rb_git_walker_simplify_first_parent , 0 );
518
- rb_define_method (rb_cRuggedWalker , "count" , rb_git_walker_count , 0 );
522
+ rb_define_method (rb_cRuggedWalker , "count" , rb_git_walker_count , -1 );
519
523
}
0 commit comments