Skip to content

Commit b7b6389

Browse files
authored
Merge pull request #30 from ruby/sync-ruby-core
Sync with ruby core
2 parents 36c6bbc + 6012525 commit b7b6389

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

gc/mmtk/mmtk.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,8 @@ rb_gc_impl_define_finalizer(void *objspace_ptr, VALUE obj, VALUE block)
973973

974974
RBASIC(obj)->flags |= FL_FINALIZE;
975975

976+
int lev = rb_gc_vm_lock();
977+
976978
if (st_lookup(objspace->finalizer_table, obj, &data)) {
977979
table = (VALUE)data;
978980

@@ -984,6 +986,7 @@ rb_gc_impl_define_finalizer(void *objspace_ptr, VALUE obj, VALUE block)
984986
for (i = 0; i < len; i++) {
985987
VALUE recv = RARRAY_AREF(table, i);
986988
if (rb_equal(recv, block)) {
989+
rb_gc_vm_unlock(lev);
987990
return recv;
988991
}
989992
}
@@ -997,6 +1000,8 @@ rb_gc_impl_define_finalizer(void *objspace_ptr, VALUE obj, VALUE block)
9971000
st_add_direct(objspace->finalizer_table, obj, table);
9981001
}
9991002

1003+
rb_gc_vm_unlock(lev);
1004+
10001005
return block;
10011006
}
10021007

0 commit comments

Comments
 (0)