aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/src/asn1rtt_per_common.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2014-06-16 12:03:08 +0200
committerBjörn Gustavsson <[email protected]>2014-06-16 12:03:08 +0200
commit26e63b26e605a74ba0a0a58c1fb1cb0ba358efed (patch)
tree30b4f613f1d24c5db5d3827d48b74c6220a5cd03 /lib/asn1/src/asn1rtt_per_common.erl
parent5a2aedb547c7e878d3694e8695a7985192a0a4d7 (diff)
parent0db2668288bf399983e0f6daac85b00d68ab0360 (diff)
downloadotp-26e63b26e605a74ba0a0a58c1fb1cb0ba358efed.tar.gz
otp-26e63b26e605a74ba0a0a58c1fb1cb0ba358efed.tar.bz2
otp-26e63b26e605a74ba0a0a58c1fb1cb0ba358efed.zip
Merge branch 'bjorn/asn1/dialyzer-warnings/OTP-11372' into maint
* bjorn/asn1/dialyzer-warnings/OTP-11372: (23 commits) BER: Eliminate dialyzer warnings for specialized decode functions BER: Eliminate dialyzer warning for encoding of BIT STRINGs BER: Optimize encoding of ENUMERATED BER: Remove a redundant clause in encoding of open types (U)PER: Fix decoding of named INTEGER (U)PER: Fix encoding of a semi-constrained, named INTEGER (U)PER: Optimize handling of named BIT STRING with a lower zero bound PER: Optimize encoding of character strings with simple ranges PER: Remove unnecessary clause for handling DEFAULT (U)PER: Suppress dialyzer warnings for complete/1 Test suites: Add support for running Dialyzer on generated code Improve tests of DEFAULT values Correct OCTET STRING default when legacy_erlang_types is active Remove old DEFAULT-checking code made obsolete in the previous commit Rewrite the code for testing DEFAULT for DER Test DEFAULT more thoroughly Set.py: Correct illegal DEFAULT value BER: Optimize decoding of ENUMERATED BER: Suppress dialyzer warnings for encode_bit_string/4 BER: Inline testing of constraints when decoding ...
Diffstat (limited to 'lib/asn1/src/asn1rtt_per_common.erl')
-rw-r--r--lib/asn1/src/asn1rtt_per_common.erl13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/asn1/src/asn1rtt_per_common.erl b/lib/asn1/src/asn1rtt_per_common.erl
index 71fec411a0..0290c75a28 100644
--- a/lib/asn1/src/asn1rtt_per_common.erl
+++ b/lib/asn1/src/asn1rtt_per_common.erl
@@ -30,6 +30,7 @@
decode_big_chars/2,
decode_oid/1,decode_relative_oid/1,
encode_chars/2,encode_chars/3,
+ encode_chars_compact_map/3,
encode_chars_16bit/1,encode_big_chars/1,
encode_fragmented/2,
encode_oid/1,encode_relative_oid/1,
@@ -108,6 +109,9 @@ encode_chars(Val, NumBits) ->
encode_chars(Val, NumBits, {Lb,Tab}) ->
<< <<(enc_char(C, Lb, Tab)):NumBits>> || C <- Val >>.
+encode_chars_compact_map(Val, NumBits, {Lb,Limit}) ->
+ << <<(enc_char_cm(C, Lb, Limit)):NumBits>> || C <- Val >>.
+
encode_chars_16bit(Val) ->
L = [case C of
{0,0,A,B} -> [A,B];
@@ -383,6 +387,15 @@ enc_char(C0, Lb, Tab) ->
illegal_char_error()
end.
+enc_char_cm(C0, Lb, Limit) ->
+ C = C0 - Lb,
+ if
+ 0 =< C, C < Limit ->
+ C;
+ true ->
+ illegal_char_error()
+ end.
+
illegal_char_error() ->
error({error,{asn1,"value forbidden by FROM constraint"}}).