diff options
author | Björn Gustavsson <[email protected]> | 2016-05-24 08:41:30 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-05-25 16:41:26 +0200 |
commit | bb468eab3064d1e8bec5d6c6f53c60ccce2c9dc2 (patch) | |
tree | 503501fb04e438ab5a64d31cbe95fcc7f4b9866a | |
parent | ad9ff167ab254993597ffaa84256bac0bdf5520e (diff) | |
download | otp-bb468eab3064d1e8bec5d6c6f53c60ccce2c9dc2.tar.gz otp-bb468eab3064d1e8bec5d6c6f53c60ccce2c9dc2.tar.bz2 otp-bb468eab3064d1e8bec5d6c6f53c60ccce2c9dc2.zip |
beam_receive: Don't crash when encountering nonsensical code
-rw-r--r-- | lib/compiler/src/beam_receive.erl | 3 | ||||
-rw-r--r-- | lib/compiler/test/receive_SUITE.erl | 6 |
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/compiler/src/beam_receive.erl b/lib/compiler/src/beam_receive.erl index c593184746..89cafe27ce 100644 --- a/lib/compiler/src/beam_receive.erl +++ b/lib/compiler/src/beam_receive.erl @@ -177,7 +177,8 @@ opt_recv([I|Is], D, R0, L0, Acc) -> no; false -> opt_recv(Is, D, R, L, [I|Acc]) - end. + end; +opt_recv([], _, _, _, _) -> no. opt_update_regs({block,Bl}, R, L) -> {opt_update_regs_bl(Bl, R),L}; diff --git a/lib/compiler/test/receive_SUITE.erl b/lib/compiler/test/receive_SUITE.erl index 3c397561fc..8304672558 100644 --- a/lib/compiler/test/receive_SUITE.erl +++ b/lib/compiler/test/receive_SUITE.erl @@ -118,8 +118,14 @@ coverage(Config) when is_list(Config) -> 59 = tuple_to_values(infinity, x), 61 = tuple_to_values(999999, x), 0 = tuple_to_values(1, x), + + {'EXIT',{{badmap,[]},_}} = (catch monitor_plus_badmap(self())), + ok. +monitor_plus_badmap(Pid) -> + monitor(process, Pid) + []#{}. + receive_all() -> receive Any -> |