aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_interface/test/ei_decode_SUITE_data
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2019-04-26 19:43:53 +0200
committerSverker Eriksson <[email protected]>2019-04-26 19:43:53 +0200
commit01aa8b82dd0f8229355ffd2bb2bc8e8f496d2df6 (patch)
tree0a3ae48dfe7f442aa138d7c06fbf5444e9f7c8b6 /lib/erl_interface/test/ei_decode_SUITE_data
parent8f6d45ddc8b2b12376c252a30b267a822cad171a (diff)
downloadotp-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.c15
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) {