diff --git a/set.c b/set.c index 0f72a8ea4d..6fb04d8788 100644 --- a/set.c +++ b/set.c @@ -494,18 +494,13 @@ set_i_initialize(int argc, VALUE *argv, VALUE set) if (argc > 0 && (other = argv[0]) != Qnil) { if (RB_TYPE_P(other, T_ARRAY)) { - long len = RARRAY_LEN(other); - if (RARRAY_LEN(other) != 0) { - set_table *into = RSET_TABLE(set); - VALUE key; - int block_given = rb_block_given_p(); - RARRAY_PTR_USE(other, ptr, { - for(; len > 0; len--, ptr++) { - key = *ptr; - if (block_given) key = rb_yield(key); - set_table_insert_wb(into, set, key, NULL); - } - }); + long i; + int block_given = rb_block_given_p(); + set_table *into = RSET_TABLE(set); + for (i=0; i