fix initialize order
`captured->code.val` should be initialize before because it can be a GC point by another ractor because `RB_OBJ_WRITE` can issue VM locking.
This commit is contained in:
parent
82bbce826f
commit
e8cee4915b
2
vm.c
2
vm.c
@ -905,8 +905,8 @@ vm_proc_create_from_captured(VALUE klass,
|
|||||||
VM_ASSERT(VM_EP_IN_HEAP_P(GET_EC(), captured->ep));
|
VM_ASSERT(VM_EP_IN_HEAP_P(GET_EC(), captured->ep));
|
||||||
|
|
||||||
/* copy block */
|
/* copy block */
|
||||||
RB_OBJ_WRITE(procval, &proc->block.as.captured.self, captured->self);
|
|
||||||
RB_OBJ_WRITE(procval, &proc->block.as.captured.code.val, captured->code.val);
|
RB_OBJ_WRITE(procval, &proc->block.as.captured.code.val, captured->code.val);
|
||||||
|
RB_OBJ_WRITE(procval, &proc->block.as.captured.self, captured->self);
|
||||||
rb_vm_block_ep_update(procval, &proc->block, captured->ep);
|
rb_vm_block_ep_update(procval, &proc->block, captured->ep);
|
||||||
|
|
||||||
vm_block_type_set(&proc->block, block_type);
|
vm_block_type_set(&proc->block, block_type);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user