summaryrefslogtreecommitdiff
path: root/cont.c
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-06-20 13:41:18 +1200
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-06-20 13:41:18 +1200
commitdbc2b89bc042d73e60aeb7d56686aa28d82e2622 (patch)
tree24df8e3faf9d37b9020c23ce21c2c769beb13920 /cont.c
parent6bf1285b2069ff736e283a1f8328852e3175fccc (diff)
Ensure `vm_stack` is cleared after fork.
Diffstat (limited to 'cont.c')
-rw-r--r--cont.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/cont.c b/cont.c
index c0f9c1c720..b83a0ad94c 100644
--- a/cont.c
+++ b/cont.c
@@ -268,13 +268,6 @@ fiber_status_set(rb_fiber_t *fib, enum fiber_status s)
fib->status = s;
}
-void
-rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size)
-{
- ec->vm_stack = stack;
- ec->vm_stack_size = size;
-}
-
static inline void
ec_switch(rb_thread_t *th, rb_fiber_t *fib)
{
@@ -705,7 +698,7 @@ cont_capture(volatile int *volatile stat)
cont->saved_vm_stack.ptr = ALLOC_N(VALUE, ec->vm_stack_size);
MEMCPY(cont->saved_vm_stack.ptr, ec->vm_stack, VALUE, ec->vm_stack_size);
#endif
- rb_ec_set_vm_stack(&cont->saved_ec, NULL, 0);
+ rb_ec_clear_vm_stack(&cont->saved_ec);
cont_save_machine_stack(th, cont);
/* backup ensure_list to array for search in another context */
@@ -1793,8 +1786,7 @@ rb_fiber_close(rb_fiber_t *fib)
}
}
- rb_ec_set_vm_stack(ec, NULL, 0);
- ec->cfp = NULL;
+ rb_ec_clear_vm_stack(ec);
#if !FIBER_USE_NATIVE
/* should not mark machine stack any more */