diff options
author | Sverker Eriksson <[email protected]> | 2019-04-26 19:43:53 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2019-04-26 19:43:53 +0200 |
commit | 01aa8b82dd0f8229355ffd2bb2bc8e8f496d2df6 (patch) | |
tree | 0a3ae48dfe7f442aa138d7c06fbf5444e9f7c8b6 /lib/erl_interface/test/ei_decode_SUITE_data | |
parent | 8f6d45ddc8b2b12376c252a30b267a822cad171a (diff) | |
download | otp-01aa8b82dd0f8229355ffd2bb2bc8e8f496d2df6.tar.gz otp-01aa8b82dd0f8229355ffd2bb2bc8e8f496d2df6.tar.bz2 otp-01aa8b82dd0f8229355ffd2bb2bc8e8f496d2df6.zip |
erl_interface: Tweak bit string encode/decode API
to support zero copy decoding
and bit offset arguments for future unaligned bit strings.
Diffstat (limited to 'lib/erl_interface/test/ei_decode_SUITE_data')
-rw-r--r-- | lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c index d39970a857..46d6b8f2af 100644 --- a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c +++ b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c @@ -319,17 +319,18 @@ static void decode_bin(int exp_size, const char* val, int exp_len) static void decode_bits(int exp_size, const char* val, size_t exp_bits) { - char p[1024]; + const char* p; char *buf; size_t bits; + int bitoffs; int size1 = 0; int size2 = 0; int err; message("ei_decode_bitstring should be %d bits", (int)exp_bits); buf = read_packet(NULL); - err = ei_decode_bitstring(buf+1, &size1, NULL, sizeof(p), &bits); - message("err = %d, size = %d, len = %d, expected size = %d, expected bits = %d\n",\ - err,size1, (int)bits, exp_size, (int)exp_bits); + err = ei_decode_bitstring(buf+1, &size1, NULL, &bitoffs, &bits); + message("err = %d, size = %d, bitoffs = %d, bits = %d, expected size = %d, expected bits = %d\n",\ + err,size1, bitoffs, (int)bits, exp_size, (int)exp_bits); if (err != 0) { if (err != -1) { @@ -344,8 +345,12 @@ static void decode_bits(int exp_size, const char* val, size_t exp_bits) fail("number of bits is not correct"); return; } + if (bitoffs != 0) { + fail("non zero bit offset"); + return; + } - err = ei_decode_bitstring(buf+1, &size2, p, sizeof(p), &bits); + err = ei_decode_bitstring(buf+1, &size2, &p, NULL, &bits); message("err = %d, size = %d, len = %d, expected size = %d, expected len = %d\n",\ err,size2, (int)bits, exp_size, (int)exp_bits); if (err != 0) { |