From 6eac68854c414285b7a99f27196bbbfa7969b295 Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Fri, 27 Jun 2014 16:08:46 +0200 Subject: dialyzer, hipe: Fix a bug concerning is_record/2,3 Also fixed some cases where Dialyzer could crash due to reaching system limits. --- lib/hipe/cerl/erl_types.erl | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/hipe/cerl/erl_types.erl') diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index 0927c17b6b..4b2bec5fa8 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -262,6 +262,8 @@ -define(TAG_IMMED1_SIZE, 4). -define(BITS, (erlang:system_info(wordsize) * 8) - ?TAG_IMMED1_SIZE). +-define(MAX_TUPLE_SIZE, (1 bsl 10)). + %%----------------------------------------------------------------------------- %% Type tags and qualifiers %% @@ -1770,6 +1772,8 @@ t_tuple() -> -spec t_tuple(non_neg_integer() | [erl_type()]) -> erl_type(). +t_tuple(N) when is_integer(N), N > ?MAX_TUPLE_SIZE -> + t_tuple(); t_tuple(N) when is_integer(N) -> ?tuple(lists:duplicate(N, ?any), N, ?any); t_tuple(List) -> -- cgit v1.2.3