unit-tests: don't use ck_assert() to test a cleared chunk, as it allocates data

The new allocation might be in the freed area, affecting the test result.
This commit is contained in:
Martin Willi
2013-06-21 10:53:22 +02:00
parent 52bff13848
commit 44886a0667
+10 -3
View File
@@ -97,6 +97,7 @@ START_TEST(test_chunk_clear)
chunk_t chunk; chunk_t chunk;
u_char *ptr; u_char *ptr;
int i; int i;
bool cleared = TRUE;
chunk = chunk_empty; chunk = chunk_empty;
chunk_clear(&chunk); chunk_clear(&chunk);
@@ -109,12 +110,18 @@ START_TEST(test_chunk_clear)
chunk.ptr[i] = i; chunk.ptr[i] = i;
} }
chunk_clear(&chunk); chunk_clear(&chunk);
assert_chunk_empty(chunk); /* check memory area of freed chunk. We can't use ck_assert() for this
/* check memory area of freed chunk */ * test directly, as it might allocate data at the freed area. */
for (i = 0; i < 64; i++) for (i = 0; i < 64; i++)
{ {
ck_assert(ptr[i] == 0 || ptr[i] != i); if (ptr[i] != 0 && ptr[i] == i)
{
cleared = FALSE;
break;
}
} }
assert_chunk_empty(chunk);
ck_assert(cleared);
} }
END_TEST END_TEST