enum_first_19.patch

marcandre (Marc-Andre Lafortune), 06/02/2009 05:38 am

Download (709 Bytes)

enum.c (working copy)
619 619
    else {
620 620
	long n = NUM2LONG(ary[0]);
621 621

  
622
	rb_ary_push(ary[1], i);
623
	n--;
622 624
	if (n <= 0) {
623 625
	    rb_iter_break();
624 626
	}
625
	rb_ary_push(ary[1], i);
626
	n--;
627 627
	ary[0] = INT2NUM(n);
628 628
    }
629 629
    return Qnil;
......
649 649
	ary[0] = ary[1] = Qnil;
650 650
    }
651 651
    else {
652
	long len;
652 653
	rb_scan_args(argc, argv, "01", &n);
653
	ary[0] = n;
654
	ary[1] = rb_ary_new2(NUM2LONG(n));
654
	len = NUM2LONG(n);
655
	if (len == 0) return rb_ary_new2(0);
656
	ary[0] = INT2NUM(len);
657
	ary[1] = rb_ary_new2(len);
655 658
    }
656 659
    rb_block_call(obj, id_each, 0, 0, first_i, (VALUE)ary);
657 660