chunk: Skip all leading zero bytes in chunk_skip_zero() not just the first
This commit is contained in:
@@ -316,11 +316,11 @@ START_TEST(test_chunk_skip)
|
|||||||
foobar = chunk_from_str("foobar");
|
foobar = chunk_from_str("foobar");
|
||||||
a = foobar;
|
a = foobar;
|
||||||
a = chunk_skip(a, 0);
|
a = chunk_skip(a, 0);
|
||||||
ck_assert(chunk_equals(a, foobar));
|
ck_assert_chunk_eq(a, foobar);
|
||||||
a = chunk_skip(a, 1);
|
a = chunk_skip(a, 1);
|
||||||
ck_assert(chunk_equals(a, chunk_from_str("oobar")));
|
ck_assert_chunk_eq(a, chunk_from_str("oobar"));
|
||||||
a = chunk_skip(a, 2);
|
a = chunk_skip(a, 2);
|
||||||
ck_assert(chunk_equals(a, chunk_from_str("bar")));
|
ck_assert_chunk_eq(a, chunk_from_str("bar"));
|
||||||
a = chunk_skip(a, 3);
|
a = chunk_skip(a, 3);
|
||||||
assert_chunk_empty(a);
|
assert_chunk_empty(a);
|
||||||
|
|
||||||
@@ -338,20 +338,24 @@ START_TEST(test_chunk_skip_zero)
|
|||||||
{
|
{
|
||||||
chunk_t foobar, a;
|
chunk_t foobar, a;
|
||||||
|
|
||||||
a = chunk_empty;
|
a = chunk_skip_zero(chunk_empty);
|
||||||
a = chunk_skip_zero(a);
|
|
||||||
assert_chunk_empty(a);
|
assert_chunk_empty(a);
|
||||||
|
|
||||||
foobar = chunk_from_str("foobar");
|
foobar = chunk_from_str("foobar");
|
||||||
a = foobar;
|
a = chunk_skip_zero(foobar);
|
||||||
a = chunk_skip_zero(a);
|
ck_assert_chunk_eq(a, foobar);
|
||||||
ck_assert(chunk_equals(a, foobar));
|
|
||||||
|
|
||||||
a = chunk_from_chars(0x00, 0xaa, 0xbb, 0xcc);
|
foobar = chunk_from_chars(0x00);
|
||||||
|
a = chunk_skip_zero(foobar);
|
||||||
|
ck_assert_chunk_eq(a, foobar);
|
||||||
|
|
||||||
|
a = chunk_skip_zero(chunk_from_chars(0x00, 0xaa, 0xbb, 0xcc));
|
||||||
|
ck_assert_chunk_eq(a, chunk_from_chars(0xaa, 0xbb, 0xcc));
|
||||||
a = chunk_skip_zero(a);
|
a = chunk_skip_zero(a);
|
||||||
ck_assert(chunk_equals(a, chunk_from_chars(0xaa, 0xbb, 0xcc)));
|
ck_assert_chunk_eq(a, chunk_from_chars(0xaa, 0xbb, 0xcc));
|
||||||
a = chunk_skip_zero(a);
|
|
||||||
ck_assert(chunk_equals(a, chunk_from_chars(0xaa, 0xbb, 0xcc)));
|
a = chunk_skip_zero(chunk_from_chars(0x00, 0x00, 0xaa, 0xbb, 0xcc));
|
||||||
|
ck_assert_chunk_eq(a, chunk_from_chars(0xaa, 0xbb, 0xcc));
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
|||||||
@@ -280,11 +280,11 @@ static inline chunk_t chunk_skip(chunk_t chunk, size_t bytes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Skip a leading zero-valued byte
|
* Skip any leading zero-valued bytes
|
||||||
*/
|
*/
|
||||||
static inline chunk_t chunk_skip_zero(chunk_t chunk)
|
static inline chunk_t chunk_skip_zero(chunk_t chunk)
|
||||||
{
|
{
|
||||||
if (chunk.len > 1 && *chunk.ptr == 0x00)
|
while (chunk.len > 1 && *chunk.ptr == 0x00)
|
||||||
{
|
{
|
||||||
chunk.ptr++;
|
chunk.ptr++;
|
||||||
chunk.len--;
|
chunk.len--;
|
||||||
|
|||||||
Reference in New Issue
Block a user