Skip to content

Commit 169550a

Browse files
committed
fix order of setting Task result and state
1 parent e3c6c79 commit 169550a

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/task.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,14 @@ void JL_NORETURN jl_finish_task(jl_task_t *t, jl_value_t *resultval JL_MAYBE_UNR
151151
{
152152
jl_ptls_t ptls = jl_get_ptls_states();
153153
JL_SIGATOMIC_BEGIN();
154+
t->result = resultval;
155+
jl_gc_wb(t, t->result);
154156
if (t->exception != jl_nothing)
155-
t->state = failed_sym;
157+
jl_atomic_store_release(&t->state, failed_sym);
156158
else
157-
t->state = done_sym;
159+
jl_atomic_store_release(&t->state, done_sym);
158160
if (t->copy_stack) // early free of stkbuf
159161
t->stkbuf = NULL;
160-
t->result = resultval;
161-
jl_gc_wb(t, t->result);
162162
// ensure that state is cleared
163163
ptls->in_finalizer = 0;
164164
ptls->in_pure_callback = 0;

0 commit comments

Comments
 (0)