aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2012-08-30 21:40:17 +0200
committerSverker Eriksson <[email protected]>2012-08-31 15:50:15 +0200
commite557d9e5342ed2823d8d580a3b532752c6bbbc15 (patch)
tree15f7a05b9dba1c3414fe2b27096b94bde92da177
parent7719f3e754e43e8176f906c9075257367f73cf93 (diff)
downloadotp-e557d9e5342ed2823d8d580a3b532752c6bbbc15.tar.gz
otp-e557d9e5342ed2823d8d580a3b532752c6bbbc15.tar.bz2
otp-e557d9e5342ed2823d8d580a3b532752c6bbbc15.zip
erts: Allow thr_prgr_later_op to reschedule
and reuse the same ErtsThrPrgrLaterOp
-rw-r--r--erts/emulator/beam/erl_process.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 25b32c851d..986619944e 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -1632,6 +1632,9 @@ handle_thr_prgr_later_op(ErtsAuxWorkData *awdp, erts_aint32_t aux_work)
if (!erts_thr_progress_has_reached_this(current, lop->later))
return aux_work & ~ERTS_SSI_AUX_WORK_THR_PRGR_LATER_OP;
awdp->later_op.first = lop->next;
+ if (!awdp->later_op.first) {
+ awdp->later_op.last = NULL;
+ }
lop->func(lop->data);
if (!awdp->later_op.first) {
awdp->later_op.last = NULL;