File tree Expand file tree Collapse file tree 1 file changed +7
-5
lines changed
Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Original file line number Diff line number Diff line change @@ -453,7 +453,7 @@ mrb_gc_unregister(mrb_state *mrb, mrb_value obj)
453453 mrb_sym root = mrb_intern_lit (mrb , GC_ROOT_NAME );
454454 mrb_value table = mrb_gv_get (mrb , root );
455455 struct RArray * a ;
456- mrb_int i , j ;
456+ mrb_int i , len ;
457457
458458 if (mrb_nil_p (table )) return ;
459459 if (mrb_type (table ) != MRB_TT_ARRAY ) {
@@ -462,12 +462,14 @@ mrb_gc_unregister(mrb_state *mrb, mrb_value obj)
462462 }
463463 a = mrb_ary_ptr (table );
464464 mrb_ary_modify (mrb , a );
465- for (i = j = 0 ; i < a -> len ; i ++ ) {
466- if (!mrb_obj_eq (mrb , a -> ptr [i ], obj )) {
467- a -> ptr [j ++ ] = a -> ptr [i ];
465+ len = a -> len - 1 ;
466+ for (i = 0 ; i < len ; i ++ ) {
467+ if (mrb_obj_eq (mrb , a -> ptr [i ], obj )) {
468+ memmove (& a -> ptr [i ], & a -> ptr [i + 1 ], len - i );
469+ break ;
468470 }
469471 }
470- a -> len = j ;
472+ a -> len -- ;
471473}
472474
473475MRB_API struct RBasic *
You can’t perform that action at this time.
0 commit comments