@@ -85,8 +85,9 @@ enum_find(argc, argv, obj)
85
85
rb_scan_args (argc , argv , "01" , & if_none );
86
86
rb_iterate (rb_each , obj , find_i , (VALUE )memo );
87
87
if (memo -> u2 .value ) {
88
+ VALUE result = memo -> u1 .value ;
88
89
rb_gc_force_recycle ((VALUE )memo );
89
- return memo -> u1 . value ;
90
+ return result ;
90
91
}
91
92
rb_gc_force_recycle ((VALUE )memo );
92
93
if (!NIL_P (if_none )) {
@@ -188,8 +189,9 @@ inject_i(i, memo)
188
189
memo -> u2 .value = Qfalse ;
189
190
memo -> u1 .value = i ;
190
191
}
191
- else
192
+ else {
192
193
memo -> u1 .value = rb_yield (rb_assoc_new (memo -> u1 .value , i ));
194
+ }
193
195
194
196
return Qnil ;
195
197
}
@@ -278,12 +280,14 @@ static VALUE
278
280
enum_all (obj )
279
281
VALUE obj ;
280
282
{
283
+ VALUE result ;
281
284
NODE * memo = rb_node_newnode (NODE_MEMO , Qnil , 0 , 0 );
282
285
283
286
memo -> u1 .value = Qtrue ;
284
287
rb_iterate (rb_each , obj , all_i , (VALUE )memo );
288
+ result = memo -> u1 .value ;
285
289
rb_gc_force_recycle ((VALUE )memo );
286
- return memo -> u1 . value ;
290
+ return result ;
287
291
}
288
292
289
293
static VALUE
@@ -302,12 +306,14 @@ static VALUE
302
306
enum_any (obj )
303
307
VALUE obj ;
304
308
{
309
+ VALUE result ;
305
310
NODE * memo = rb_node_newnode (NODE_MEMO , Qnil , 0 , 0 );
306
311
307
312
memo -> u1 .value = Qfalse ;
308
313
rb_iterate (rb_each , obj , any_i , (VALUE )memo );
314
+ result = memo -> u1 .value ;
309
315
rb_gc_force_recycle ((VALUE )memo );
310
- return memo -> u1 . value ;
316
+ return result ;
311
317
}
312
318
313
319
static VALUE
@@ -348,11 +354,13 @@ static VALUE
348
354
enum_min (obj )
349
355
VALUE obj ;
350
356
{
357
+ VALUE result ;
351
358
NODE * memo = rb_node_newnode (NODE_MEMO , Qnil , 0 , 0 );
352
359
353
360
rb_iterate (rb_each , obj , rb_block_given_p ()?min_ii :min_i , (VALUE )memo );
361
+ result = memo -> u1 .value ;
354
362
rb_gc_force_recycle ((VALUE )memo );
355
- return memo -> u1 . value ;
363
+ return result ;
356
364
}
357
365
358
366
static VALUE
@@ -393,11 +401,13 @@ static VALUE
393
401
enum_max (obj )
394
402
VALUE obj ;
395
403
{
404
+ VALUE result ;
396
405
NODE * memo = rb_node_newnode (NODE_MEMO , Qnil , 0 , 0 );
397
406
398
407
rb_iterate (rb_each , obj , rb_block_given_p ()?max_ii :max_i , (VALUE )memo );
408
+ result = memo -> u1 .value ;
399
409
rb_gc_force_recycle ((VALUE )memo );
400
- return memo -> u1 . value ;
410
+ return result ;
401
411
}
402
412
403
413
static VALUE
@@ -417,7 +427,6 @@ enum_member(obj, val)
417
427
VALUE obj , val ;
418
428
{
419
429
VALUE result ;
420
-
421
430
NODE * memo = rb_node_newnode (NODE_MEMO , val , Qfalse , 0 );
422
431
423
432
rb_iterate (rb_each , obj , member_i , (VALUE )memo );
0 commit comments