summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorasomers <asomers@FreeBSD.org>2016-06-24 21:44:46 +0000
committerasomers <asomers@FreeBSD.org>2016-06-24 21:44:46 +0000
commitaa7e564bf30e996aea3c47dd96ba6f85bdc804db (patch)
treeef8b45ececf575950d2fe7fdd4a41b704015eb78 /tests
parentc5064f0323016fc0ff3a8d674ba24995ac35c1e6 (diff)
downloadFreeBSD-src-aa7e564bf30e996aea3c47dd96ba6f85bdc804db.zip
FreeBSD-src-aa7e564bf30e996aea3c47dd96ba6f85bdc804db.tar.gz
Fix bitstring allocation on 32-bit platforms
sys/sys/bitstring.h Fix a rounding calculation that could undersize a bitstring on 32-bit platforms. tests/sys/sys/bitstring_test.h Add a test for bitstr_size PR: 210260 Reported by: Mark Millard Reviewed by: gibbs Approved by: re (marius) Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D6848
Diffstat (limited to 'tests')
-rw-r--r--tests/sys/sys/bitstring_test.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/sys/sys/bitstring_test.c b/tests/sys/sys/bitstring_test.c
index f80115a..fbfe782 100644
--- a/tests/sys/sys/bitstring_test.c
+++ b/tests/sys/sys/bitstring_test.c
@@ -102,6 +102,17 @@ ATF_TC_BODY(bitstr_in_struct, tc)
bit_nclear(test_struct.bitstr, 0, 8);
}
+ATF_TC_WITHOUT_HEAD(bitstr_size);
+ATF_TC_BODY(bitstr_size, tc)
+{
+ size_t sob = sizeof(bitstr_t);
+
+ ATF_CHECK_EQ(0, bitstr_size(0));
+ ATF_CHECK_EQ(sob, bitstr_size(1));
+ ATF_CHECK_EQ(sob, bitstr_size(sob * 8));
+ ATF_CHECK_EQ(2 * sob, bitstr_size(sob * 8 + 1));
+}
+
BITSTRING_TC_DEFINE(bit_set)
/* bitstr_t *bitstr, int nbits, const char *memloc */
{
@@ -407,6 +418,7 @@ ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, bitstr_in_struct);
+ ATF_TP_ADD_TC(tp, bitstr_size);
BITSTRING_TC_ADD(tp, bit_set);
BITSTRING_TC_ADD(tp, bit_clear);
BITSTRING_TC_ADD(tp, bit_ffs);
OpenPOWER on IntegriCloud