diff options
author | 2012-09-18 17:20:03 -0600 | |
---|---|---|
committer | 2012-09-18 17:47:06 -0600 | |
commit | fd66ea669c131f660799bb6f9ea9988a17cd03ef (patch) | |
tree | 2b867eb99fa86f65b17feb57bd7396886ca542de /tests | |
parent | build: avoid non-portable byte-swapping (diff) | |
download | libvirt-fd66ea669c131f660799bb6f9ea9988a17cd03ef.tar.gz libvirt-fd66ea669c131f660799bb6f9ea9988a17cd03ef.tar.bz2 libvirt-fd66ea669c131f660799bb6f9ea9988a17cd03ef.zip |
bitmap: fix problems in previous commit
Commit ee3d3893 missed the fact that (unsigned char)<<(int)
is truncated to int, and therefore failed for any bitmap data
longer than four bytes.
Also, I failed to run 'make syntax-check' on my commit 4bba6579;
for whatever odd reason, ffs lives in a different header than ffsl.
* src/util/bitmap.c (virBitmapNewData): Use correct shift type.
(includes): Glibc (and therefore gnulib) decided ffs is in
<strings.h>, but ffsl is in <string.h>.
* tests/virbitmaptest.c (test5): Test it.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/virbitmaptest.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index 028556f06..71836def6 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -214,15 +214,15 @@ error: /* test for virBitmapNewData/ToData */ static int test5(const void *v ATTRIBUTE_UNUSED) { - char data[] = {0x01, 0x02, 0x00, 0x00}; + char data[] = {0x01, 0x02, 0x00, 0x00, 0x04}; unsigned char *data2 = NULL; int len2; - int bits[] = {0, 9}; + int bits[] = {0, 9, 34}; virBitmapPtr bitmap; int i, j; int ret = -1; - bitmap = virBitmapNewData(data, 4); + bitmap = virBitmapNewData(data, sizeof(data)); if (!bitmap) goto error; @@ -242,10 +242,12 @@ static int test5(const void *v ATTRIBUTE_UNUSED) if (virBitmapToData(bitmap, &data2, &len2) < 0) goto error; - if (data2[0] != 0x05 || + if (len2 != sizeof(data) || + data2[0] != 0x05 || data2[1] != 0x82 || data2[2] != 0x00 || - data2[3] != 0x00) + data2[3] != 0x00 || + data2[4] != 0x04) goto error; ret = 0; |