File 2441-Remove-default-clauses-that-cause-exceptions-for-int.patch of Package erlang

From ec57794ac294666a8bf31f9f7f79585ddaeed808 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Tue, 14 Mar 2017 15:57:25 +0100
Subject: [PATCH 10/10] Remove default clauses that cause exceptions for
 internal errors

Just crash if there is an internal error.
---
 lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl | 43 ++++++++++++--------------
 lib/asn1/src/asn1ct_gen.erl                    | 12 ++-----
 lib/asn1/src/asn1ct_gen_per.erl                |  4 +--
 lib/asn1/src/asn1ct_value.erl                  |  8 ++---
 4 files changed, 26 insertions(+), 41 deletions(-)

diff --git a/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl b/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl
index 976296a27..bfb69a09b 100644
--- a/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl
+++ b/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl
@@ -1025,29 +1025,26 @@ gen_enc_line(Erules,TopType,Cname,Type,Element,Indent,OptOrMand,Assign,EncObj)
 					   fieldname=RefedFieldName}},
 	 {componentrelation,_,_}} ->
 	    {_LeadingAttrName,Fun} = EncObj,
-	    case RefedFieldName of
-		{Name,RestFieldNames} when is_atom(Name) ->
-		    case OptOrMand of
-			mandatory -> ok;
-			_ ->
-			    emit(["{",{curr,tmpBytes},",_ } = "])
-		    end,
-		    emit([Fun,"(",{asis,Name},", ",Element,", ",
-			  {asis,RestFieldNames},"),",nl]),
-		    emit(IndDeep),
-		    case OptOrMand of
-			mandatory ->
-			    emit(["{",{curr,encBytes},",",{curr,encLen},
-				  "} = ",
-				  {call,ber,encode_open_type,
-				   [{curr,tmpBytes},{asis,Tag}]},nl]);
-			_ ->
-			    emit([{call,ber,encode_open_type,
-				   [{curr,tmpBytes},{asis,Tag}]}])
-		    end;
-		Err ->
-		    throw({asn1,{'internal error',Err}})
-	    end;
+            {Name,RestFieldNames} = RefedFieldName,
+            true = is_atom(Name),                %Assertion.
+            case OptOrMand of
+                mandatory -> ok;
+                _ ->
+                    emit(["{",{curr,tmpBytes},",_ } = "])
+            end,
+            emit([Fun,"(",{asis,Name},", ",Element,", ",
+                  {asis,RestFieldNames},"),",nl]),
+            emit(IndDeep),
+            case OptOrMand of
+                mandatory ->
+                    emit(["{",{curr,encBytes},",",{curr,encLen},
+                          "} = ",
+                          {call,ber,encode_open_type,
+                           [{curr,tmpBytes},{asis,Tag}]},nl]);
+                _ ->
+                    emit([{call,ber,encode_open_type,
+                           [{curr,tmpBytes},{asis,Tag}]}])
+            end;
 	_ ->
 	    case WhatKind of
 		{primitive,bif} ->
diff --git a/lib/asn1/src/asn1ct_gen.erl b/lib/asn1/src/asn1ct_gen.erl
index 4a51bcf8e..fa312ed05 100644
--- a/lib/asn1/src/asn1ct_gen.erl
+++ b/lib/asn1/src/asn1ct_gen.erl
@@ -378,9 +378,7 @@ get_component(Name,{C1,C2}) when is_list(C1),is_list(C2) ->
 get_component(Name,[C=#'ComponentType'{name=Name}|_Cs]) ->
     C;
 get_component(Name,[_C|Cs]) ->
-    get_component(Name,Cs);
-get_component(Name,_) ->
-    throw({error,{asn1,{internal_error,Name}}}).
+    get_component(Name,Cs).
 
 %% generate code for all inner types that are called from the top type
 %% of the partial incomplete decode and are defined within the top
@@ -597,9 +595,7 @@ gen_encode_constructed(Erules,Typename,InnerType,D) when is_record(D,type) ->
 	    Rtmod:gen_encode_sof(Erules,Typename,InnerType,D),
 	    {_,Type} = D#type.def,
 	    NameSuffix = asn1ct_gen:constructed_suffix(InnerType,Type#type.def),
-	    gen_types(Erules, [NameSuffix|Typename], Type, gen_encode);
-	_ ->
-	    exit({nyi,InnerType})
+	    gen_types(Erules, [NameSuffix|Typename], Type, gen_encode)
     end;
 gen_encode_constructed(Erules,Typename,InnerType,D) 
   when is_record(D,typedef) ->
@@ -1309,9 +1305,7 @@ get_inner(T) when is_tuple(T) ->
 		{valuefieldreference,FieldName} ->
 		    get_fieldtype(element(2,Tuple),FieldName);
 		{typefieldreference,FieldName} ->
-		    get_fieldtype(element(2,Tuple),FieldName);
-		{'EXIT',Reason} ->
-		    throw({asn1,{'internal error in get_inner/1',Reason}})
+		    get_fieldtype(element(2,Tuple),FieldName)
 	    end;
 	_ -> element(1,T)
     end.
diff --git a/lib/asn1/src/asn1ct_gen_per.erl b/lib/asn1/src/asn1ct_gen_per.erl
index 645e0e3ae..22719bba7 100644
--- a/lib/asn1/src/asn1ct_gen_per.erl
+++ b/lib/asn1/src/asn1ct_gen_per.erl
@@ -256,9 +256,7 @@ gen_decode_user(Erules,D) when is_record(D,typedef) ->
 	    asn1ct_gen:gen_decode_constructed(Erules,Typename,InnerType,D);
 	#'Externaltypereference'{}=Etype ->
 	    gen_dec_external(Etype, "Bytes"),
-	    emit([".",nl,nl]);
-	Other ->
-	    exit({error,{asn1,{unknown,Other}}})
+	    emit([".",nl,nl])
     end.
 
 gen_dec_external(Ext, BytesVar) ->
diff --git a/lib/asn1/src/asn1ct_value.erl b/lib/asn1/src/asn1ct_value.erl
index d1f5ce5c9..f7d986aa9 100644
--- a/lib/asn1/src/asn1ct_value.erl
+++ b/lib/asn1/src/asn1ct_value.erl
@@ -108,9 +108,7 @@ from_type_constructed(M,Typename,InnerType,D) when is_record(D,type) ->
 	'SET OF' ->
 	    {_,Type} = D#type.def,
 	    NameSuffix = asn1ct_gen:constructed_suffix(InnerType,Type#type.def),
-	    get_sequence_of(M,Typename,D,NameSuffix);
-	_ ->
-	    exit({nyi,InnerType})
+	    get_sequence_of(M,Typename,D,NameSuffix)
     end.
 
 get_sequence(M,Typename,Type) ->
@@ -292,9 +290,7 @@ from_type_prim(M, D) ->
                              16#ffff,16#ffee,16#10ffff,16#ffff,16#fff]),
 	    unicode:characters_to_binary(L);
 	'UniversalString' ->
-	    adjust_list(size_random(C),c_string(C,"UniversalString"));
-	XX ->
-	    exit({asn1_error,nyi,XX})
+	    adjust_list(size_random(C),c_string(C,"UniversalString"))
     end.
 
 c_string(C,Default) ->
-- 
2.12.0

openSUSE Build Service is sponsored by