diff options
author | Björn Gustavsson <[email protected]> | 2013-01-08 12:29:36 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-01-22 19:20:14 +0100 |
commit | 625d2b01dcaa0b15cc9ff7f98438bcd81a5bddc8 (patch) | |
tree | 4b67c7a2c25988fe45bf55d72d18be3df4949e3e /lib/asn1/src/asn1rtt_uper.erl | |
parent | 986e51aa44e78c6fcc566cc8a08827b46325739f (diff) | |
download | otp-625d2b01dcaa0b15cc9ff7f98438bcd81a5bddc8.tar.gz otp-625d2b01dcaa0b15cc9ff7f98438bcd81a5bddc8.tar.bz2 otp-625d2b01dcaa0b15cc9ff7f98438bcd81a5bddc8.zip |
Teach encode functions to accept a bitstring term for a BIT STRING
We do it in the simplest possible way by converting the bitstring
to a compact bitstring tuple.
The encoding of BIT STRINGs should be cleaned up and optimized.
Diffstat (limited to 'lib/asn1/src/asn1rtt_uper.erl')
-rw-r--r-- | lib/asn1/src/asn1rtt_uper.erl | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/asn1/src/asn1rtt_uper.erl b/lib/asn1/src/asn1rtt_uper.erl index a9479471eb..2d91e0df24 100644 --- a/lib/asn1/src/asn1rtt_uper.erl +++ b/lib/asn1/src/asn1rtt_uper.erl @@ -494,6 +494,10 @@ encode_boolean(Val) -> %% Unused = integer(), %% BinBits = binary(). +encode_bit_string(C, Bits, NamedBitList) when is_bitstring(Bits) -> + PadLen = (8 - (bit_size(Bits) band 7)) band 7, + Compact = {PadLen,<<Bits/bitstring,0:PadLen>>}, + encode_bit_string(C, Compact, NamedBitList); encode_bit_string(C, {Unused,BinBits}=Bin, NamedBitList) when is_integer(Unused), is_binary(BinBits) -> encode_bin_bit_string(C, Bin, NamedBitList); |