@@ -245,13 +245,15 @@ mrb_ary_s_create(mrb_state *mrb, mrb_value self)
245
245
}
246
246
247
247
static void
248
- ary_concat (mrb_state * mrb , struct RArray * a , mrb_value * ptr , mrb_int blen )
248
+ ary_concat (mrb_state * mrb , struct RArray * a , struct RArray * a2 )
249
249
{
250
- mrb_int len = a -> len + blen ;
250
+ mrb_int len = a -> len + a2 -> len ;
251
251
252
252
ary_modify (mrb , a );
253
- if (a -> aux .capa < len ) ary_expand_capa (mrb , a , len );
254
- array_copy (a -> ptr + a -> len , ptr , blen );
253
+ if (a -> aux .capa < len ) {
254
+ ary_expand_capa (mrb , a , len );
255
+ }
256
+ array_copy (a -> ptr + a -> len , a2 -> ptr , a2 -> len );
255
257
mrb_write_barrier (mrb , (struct RBasic * )a );
256
258
a -> len = len ;
257
259
}
@@ -261,17 +263,16 @@ mrb_ary_concat(mrb_state *mrb, mrb_value self, mrb_value other)
261
263
{
262
264
struct RArray * a2 = mrb_ary_ptr (other );
263
265
264
- ary_concat (mrb , mrb_ary_ptr (self ), a2 -> ptr , a2 -> len );
266
+ ary_concat (mrb , mrb_ary_ptr (self ), a2 );
265
267
}
266
268
267
269
static mrb_value
268
270
mrb_ary_concat_m (mrb_state * mrb , mrb_value self )
269
271
{
270
- mrb_value * ptr ;
271
- mrb_int blen ;
272
+ mrb_value ary ;
272
273
273
- mrb_get_args (mrb , "a " , & ptr , & blen );
274
- ary_concat (mrb , mrb_ary_ptr ( self ), ptr , blen );
274
+ mrb_get_args (mrb , "A " , & ary );
275
+ mrb_ary_concat (mrb , self , ary );
275
276
return self ;
276
277
}
277
278
0 commit comments