summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaimo Niskanen <raimo@erlang.org>2019-09-11 15:39:25 +0200
committerRaimo Niskanen <raimo@erlang.org>2019-09-11 15:43:45 +0200
commit7418cfdf7100ebfc69b68d4c46f36ea679ec26e3 (patch)
treeb4f6e52a1d4e584356a5770f37caa4645e0f758e
parentbe7de82343a71a4e5e30606fdcb34697218c4c77 (diff)
downloaderlang-7418cfdf7100ebfc69b68d4c46f36ea679ec26e3.tar.gz
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 =>