File otp_src_20.3.8.26-lib-asn1-compat.patch of Package erlang

diff -Ndurp otp_src_20.3.8.26/lib/asn1/src/asn1rtt_jer.erl otp_src_20.3.8.26-lib-asn1-compat/lib/asn1/src/asn1rtt_jer.erl
--- otp_src_20.3.8.26/lib/asn1/src/asn1rtt_jer.erl	2020-04-17 17:30:39.478146197 +0300
+++ otp_src_20.3.8.26-lib-asn1-compat/lib/asn1/src/asn1rtt_jer.erl	2020-04-17 18:02:29.618599486 +0300
@@ -94,8 +94,11 @@ encode_jer(octet_string,Value) when is_b
 encode_jer({octet_string,_Prop}, Value) when is_binary(Value) ->
     bitstring2json(Value);
 
-encode_jer({'ENUMERATED',EnumMap},Val) when is_map_key(Val,EnumMap) ->
-    Val;
+encode_jer(Type = {'ENUMERATED',EnumMap},Val) ->
+    case EnumMap of
+        #{Val := _} -> Val;
+        _ -> exit({error,{asn1,{{encode,Type},Val}}})
+    end;
 encode_jer({Type = {'ENUMERATED',_EnumList},_Constr}, Val) ->
     encode_jer(Type,Val);
 
@@ -111,7 +114,7 @@ encode_jer({typeinfo,{Module,Func}},Val)
 encode_jer({sof,Type},Vals) when is_list(Vals) ->
     [encode_jer(Type,Val)||Val <- Vals];
 encode_jer({choice,Choices},{Alt,Value}) ->
-    case is_map_key(AltBin = atom_to_binary(Alt,utf8),Choices) of
+    case maps:is_key(AltBin = atom_to_binary(Alt,utf8),Choices) of
         true ->
             EncodedVal = encode_jer(maps:get(AltBin,Choices),Value),
             #{AltBin => EncodedVal};
@@ -280,17 +283,21 @@ decode_jer({'ObjClassFieldType',_,_},Bin
 decode_jer('ASN1_OPEN_TYPE',Bin) when is_binary(Bin) ->
     Bin.
 
-decode_jer_component([{Name, Type, _OptOrDefault} | CompInfos], VMap, Acc)
-    when is_map_key(Name, VMap) ->
-    Value = maps:get(Name, VMap),
-    Dec = decode_jer(Type, Value),
-    decode_jer_component(CompInfos, VMap, [Dec | Acc]);
-decode_jer_component([{_Name, _Type, 'OPTIONAL'} | CompInfos], VMap, Acc) ->
-    decode_jer_component(CompInfos, VMap, [asn1_NOVALUE | Acc]);
-decode_jer_component([{_Name, _Type, {'DEFAULT',Dvalue}} | CompInfos], VMap, Acc) ->
-    decode_jer_component(CompInfos, VMap, [Dvalue | Acc]);
-decode_jer_component([{Name, _Type, _OptOrDefault} | _CompInfos], VMap, _Acc) ->
-    exit({error,{asn1,{{decode,{mandatory_component_missing,Name}},VMap}}});
+decode_jer_component([{Name, Type, OptOrDefault} | CompInfos], VMap, Acc) ->
+    case VMap of
+        #{Name := Value} ->
+            Dec = decode_jer(Type, Value),
+            decode_jer_component(CompInfos, VMap, [Dec | Acc]);
+        _ ->
+            case OptOrDefault of
+                'OPTIONAL' ->
+                    decode_jer_component(CompInfos, VMap, [asn1_NOVALUE | Acc]);
+                {'DEFAULT',Dvalue} ->
+                    decode_jer_component(CompInfos, VMap, [Dvalue | Acc]);
+                _ ->
+                    exit({error,{asn1,{{decode,{mandatory_component_missing,Name}},VMap}}})
+            end
+    end;
 decode_jer_component([], _, Acc) ->
     lists:reverse(Acc).
 
openSUSE Build Service is sponsored by