diff options
author | Björn Gustavsson <[email protected]> | 2013-01-30 11:20:54 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-01-30 11:35:59 +0100 |
commit | ece4c17d2288a3161c99519ae84cea530eec5bd5 (patch) | |
tree | 1b307c4b7457274e2b1f95b59544b2ce247d6936 /lib | |
parent | 68b804f34d4ec420d86953e3f519179a40fbee8f (diff) | |
download | otp-ece4c17d2288a3161c99519ae84cea530eec5bd5.tar.gz otp-ece4c17d2288a3161c99519ae84cea530eec5bd5.tar.bz2 otp-ece4c17d2288a3161c99519ae84cea530eec5bd5.zip |
Fix crash in the compiler when compiling element(2, not_a_tuple)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compiler/src/sys_core_fold.erl | 2 | ||||
-rw-r--r-- | lib/compiler/test/core_fold_SUITE.erl | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/compiler/src/sys_core_fold.erl b/lib/compiler/src/sys_core_fold.erl index d5fec0c869..07b054c5d7 100644 --- a/lib/compiler/src/sys_core_fold.erl +++ b/lib/compiler/src/sys_core_fold.erl @@ -1272,6 +1272,8 @@ eval_element(Call, #c_literal{val=Pos}, #c_var{name=V}, Types) true -> eval_failure(Call, badarg) end; + {ok,_} -> + eval_failure(Call, badarg); error -> Call end; diff --git a/lib/compiler/test/core_fold_SUITE.erl b/lib/compiler/test/core_fold_SUITE.erl index 53a65d8d17..b905e9b126 100644 --- a/lib/compiler/test/core_fold_SUITE.erl +++ b/lib/compiler/test/core_fold_SUITE.erl @@ -69,6 +69,9 @@ t_element(Config) when is_list(Config) -> ?line {'EXIT',{badarg,_}} = (catch element(5, {a,b,c,d})), ?line {'EXIT',{badarg,_}} = (catch element(5, {a,b,X,d})), ?line {'EXIT',{badarg,_}} = (catch element(5.0, {a,b,X,d})), + {'EXIT',{badarg,_}} = (catch element(2, not_a_tuple)), + {'EXIT',{badarg,_}} = (catch element(2, [])), + {'EXIT',{badarg,_}} = (catch element(2, Tuple == 3)), case id({a,b,c}) of {_,_,_}=Tup -> ?line {'EXIT',{badarg,_}} = (catch element(4, Tup)) |