File 1024-asn1-Fix-compilation-error-when-BER-and-JER-are-comb.patch of Package erlang

From 58bd6501e0309d6228a74a3286b21f9968e0ff77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Fri, 22 Mar 2024 12:23:56 +0100
Subject: [PATCH] asn1: Fix compilation error when BER and JER are combined

Closes #8291
---
 lib/asn1/src/asn1rtt_jer.erl | 30 +++++++++++++++---------------
 lib/asn1/test/asn1_SUITE.erl | 15 ++++++++++-----
 2 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/lib/asn1/src/asn1rtt_jer.erl b/lib/asn1/src/asn1rtt_jer.erl
index 3e0f2d835f..284e44e62f 100644
--- a/lib/asn1/src/asn1rtt_jer.erl
+++ b/lib/asn1/src/asn1rtt_jer.erl
@@ -464,7 +464,7 @@ jer_do_encode_named_bit_string([FirstVal | RestVal], NamedBitList) ->
     ToSetPos = jer_get_all_bitposes([FirstVal | RestVal], NamedBitList, []),
     Size = lists:max(ToSetPos) + 1,
     BitList = jer_make_and_set_list(Size, ToSetPos, 0),
-    encode_bitstring(BitList).
+    jer_encode_bitstring(BitList).
 
 jer_get_all_bitposes([{bit, ValPos} | Rest], NamedBitList, Ack) ->
     jer_get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]);
@@ -494,31 +494,31 @@ jer_make_and_set_list(Len, [], XPos) ->
 %%     ([bitlist]) -> {ListLen, UnusedBits, OctetList}
 %%=================================================================
 
-encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest]) ->
+jer_encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest]) ->
     Val = (B8 bsl 7) bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) bor
 	(B4 bsl 3) bor (B3 bsl 2) bor (B2 bsl 1) bor B1,
-    encode_bitstring(Rest, <<Val>>);
-encode_bitstring(Val) ->
-    unused_bitlist(Val, <<>>).
+    jer_encode_bitstring(Rest, <<Val>>);
+jer_encode_bitstring(Val) ->
+    jer_unused_bitlist(Val, <<>>).
 
-encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest], Ack) ->
+jer_encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest], Acc) ->
     Val = (B8 bsl 7) bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) bor
 	(B4 bsl 3) bor (B3 bsl 2) bor (B2 bsl 1) bor B1,
-    encode_bitstring(Rest, [Ack | [Val]]);
+    jer_encode_bitstring(Rest, [Acc | [Val]]);
 %%even multiple of 8 bits..
-encode_bitstring([], Ack) ->
-    Ack;
+jer_encode_bitstring([], Acc) ->
+    Acc;
 %% unused bits in last octet
-encode_bitstring(Rest, Ack) ->
-    unused_bitlist(Rest,Ack).
+jer_encode_bitstring(Rest, Acc) ->
+    jer_unused_bitlist(Rest, Acc).
 
 %%%%%%%%%%%%%%%%%%
 %% unused_bitlist([list of ones and zeros <= 7], 7, []) ->
 %%  {Unused bits, Last octet with bits moved to right}
-unused_bitlist([], Ack) ->
-    Ack;
-unused_bitlist([Bit | Rest], Ack) ->
-    unused_bitlist(Rest, <<Ack/bitstring,Bit:1>>).
+jer_unused_bitlist([], Acc) ->
+    Acc;
+jer_unused_bitlist([Bit | Rest], Acc) ->
+    jer_unused_bitlist(Rest, <<Acc/bitstring,Bit:1>>).
 
 jer_bitstr2names(BitStr,[]) ->
     BitStr;
diff --git a/lib/asn1/test/asn1_SUITE.erl b/lib/asn1/test/asn1_SUITE.erl
index e531b346f8..dffbec6b5d 100644
--- a/lib/asn1/test/asn1_SUITE.erl
+++ b/lib/asn1/test/asn1_SUITE.erl
@@ -224,7 +224,7 @@ have_jsonlib() ->
 
 test(Config, TestF) ->
     TestJer = case have_jsonlib() of
-                  true -> [jer];
+                  true -> [jer, {ber, [ber,jer]}];
                   false -> []
               end,
     test(Config, TestF, [per,
@@ -445,7 +445,13 @@ testExtensionDefault(Config) ->
     test(Config, fun testExtensionDefault/3).
 testExtensionDefault(Config, Rule, Opts) ->
     asn1_test_lib:compile_all(["ExtensionDefault"], Config, [Rule|Opts]),
-    testExtensionDefault:main(Rule).
+    case lists:member(ber, Opts) andalso lists:member(jer, Opts) of
+        true ->
+            %% JER back-end disables maps for BER, too.
+            ok;
+        false ->
+            testExtensionDefault:main(Rule)
+    end.
 
 testMaps(Config) ->
     Jer = case have_jsonlib() of
@@ -1012,9 +1018,8 @@ testNortel(Config) -> test(Config, fun testNortel/3).
 testNortel(Config, Rule, Opts) ->
     asn1_test_lib:compile("Nortel", Config, [Rule|Opts]).
 
-test_undecoded_rest(Config) -> test(Config, fun test_undecoded_rest/3).
-test_undecoded_rest(_Config,jer,_Opts) ->
-    ok; % not relevant for JER
+test_undecoded_rest(Config) ->
+    test(Config, fun test_undecoded_rest/3, [per, uper, ber]).
 test_undecoded_rest(Config, Rule, Opts) ->
     do_test_undecoded_rest(Config, Rule, Opts),
     do_test_undecoded_rest(Config, Rule, [no_ok_wrapper|Opts]),
-- 
2.35.3

openSUSE Build Service is sponsored by