Fix overflow issue in bitset_last_p (see #81)
This commit is contained in:
1 parent
4dbcfd25b3
commit
ad16b310e1
2 files changed
+9
-2
No files matched your search
+3
-1
@@ -536,7 +536,9 @@ static inline bool
|
|||||||
bitset_last_p(const bitset_it_t it)
|
bitset_last_p(const bitset_it_t it)
|
||||||
{
|
{
|
||||||
M_ASSERT (it != NULL && it->set != NULL);
|
M_ASSERT (it != NULL && it->set != NULL);
|
||||||
return (it->index) >= (it->set->size)-1;
|
/* NOTE: Can not compute 'size-1' due to potential overflow
|
||||||
|
if size is 0 */
|
||||||
|
return (it->index+1) >= (it->set->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Test if both iterators reference the same bit */
|
/* Test if both iterators reference the same bit */
|
||||||
|
|||||||
@@ -202,7 +202,12 @@ static void test1(void)
|
|||||||
assert (bitset_end_p(it));
|
assert (bitset_end_p(it));
|
||||||
|
|
||||||
assert (bitset_hash(set) != 0);
|
assert (bitset_hash(set) != 0);
|
||||||
|
|
||||||
|
bitset_clean(set);
|
||||||
|
bitset_it(it, set);
|
||||||
|
assert(bitset_end_p(it));
|
||||||
|
assert(bitset_last_p(it));
|
||||||
|
|
||||||
bitset_clear(set);
|
bitset_clear(set);
|
||||||
bitset_clear(set2);
|
bitset_clear(set2);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user