aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2012-09-18 17:20:03 -0600
committerEric Blake <eblake@redhat.com>2012-09-18 17:47:06 -0600
commitfd66ea669c131f660799bb6f9ea9988a17cd03ef (patch)
tree2b867eb99fa86f65b17feb57bd7396886ca542de /tests
parentbuild: avoid non-portable byte-swapping (diff)
downloadlibvirt-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.c12
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;