We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents c2b5881 + ab24986 commit 805e6dbCopy full SHA for 805e6db
1 file changed
src/gc.c
@@ -541,15 +541,15 @@ mrb_gc_unregister(mrb_state *mrb, mrb_value obj)
541
if (!mrb_array_p(table)) return;
542
struct RArray *a = mrb_ary_ptr(table);
543
mrb_ary_modify(mrb, a);
544
- mrb_int len = ARY_LEN(a)-1;
+ mrb_int len = ARY_LEN(a);
545
mrb_value *ptr = ARY_PTR(a);
546
- for (mrb_int i = 0; i <= len; i++) {
547
- if (mrb_ptr(ptr[i]) == mrb_ptr(obj)) {
548
- ARY_SET_LEN(a, len);
549
- memmove(&ptr[i], &ptr[i + 1], (len - i) * sizeof(mrb_value));
550
- break;
+ mrb_int w = 0;
+ for (mrb_int r = 0; r < len; r++) {
+ if (mrb_ptr(ptr[r]) != mrb_ptr(obj)) {
+ ptr[w++] = ptr[r];
551
}
552
+ ARY_SET_LEN(a, w);
553
554
555
MRB_API struct RBasic*
0 commit comments