summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaimo Niskanen <raimo@erlang.org>2019-09-11 15:46:46 +0200
committerRaimo Niskanen <raimo@erlang.org>2019-09-11 15:46:46 +0200
commit7aa51fa35661173425ba53e77c837253b73b0806 (patch)
tree240efed6f6eb572f4486649f05f159f7836ec681
parent61764a2c20e8f981ae5797cc167f0eb6a4780080 (diff)
parent7418cfdf7100ebfc69b68d4c46f36ea679ec26e3 (diff)
downloaderlang-7aa51fa35661173425ba53e77c837253b73b0806.tar.gz
Merge branch 'raimo/stdlib/gen_statem-improve-timers/OTP-15510' into maint
* raimo/stdlib/gen_statem-improve-timers/OTP-15510: Fix auto timer cancel bug
-rw-r--r--lib/stdlib/src/gen_statem.erl2
-rw-r--r--lib/stdlib/test/gen_statem_SUITE.erl3
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/stdlib/src/gen_statem.erl b/lib/stdlib/src/gen_statem.erl
index ed25799cc2..105b2a4577 100644
--- a/lib/stdlib/src/gen_statem.erl
+++ b/lib/stdlib/src/gen_statem.erl
@@ -2510,7 +2510,7 @@ cancel_timer(TimeoutType, TimerRef, Timers) ->
-compile({inline, [cancel_timer/2]}).
cancel_timer(TimeoutType, Timers) ->
case Timers of
- #{TimeoutType := TimerRef} ->
+ #{TimeoutType := {TimerRef, _TimeoutMsg}} ->
?cancel_timer(TimeoutType, TimerRef, Timers);
#{} ->
Timers
diff --git a/lib/stdlib/test/gen_statem_SUITE.erl b/lib/stdlib/test/gen_statem_SUITE.erl
index 31808a915f..aa4d258cbf 100644
--- a/lib/stdlib/test/gen_statem_SUITE.erl
+++ b/lib/stdlib/test/gen_statem_SUITE.erl
@@ -826,7 +826,8 @@ state_timeout(_Config) ->
self() ! message_to_self,
{next_state, state1, {Time,From},
%% Verify that internal events goes before external
- [{state_timeout,Time,1},
+ [{timeout,Time,1}, % Exercise different cancel code path
+ {state_timeout,Time,1},
{next_event,internal,1}]}
end,
state1 =>