mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-27 23:34:57 -04:00
putil: fix crash in BitArray::has_any_of()
This commit is contained in:
parent
446c01c796
commit
a9b158192f
@ -114,6 +114,11 @@ has_any_of(int low_bit, int size) const {
|
|||||||
++w;
|
++w;
|
||||||
|
|
||||||
while (size > 0) {
|
while (size > 0) {
|
||||||
|
if ((size_t)w >= get_num_words()) {
|
||||||
|
// Now we're up to the highest bits.
|
||||||
|
return (_highest_bits != 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (size <= num_bits_per_word) {
|
if (size <= num_bits_per_word) {
|
||||||
// The remainder fits within one word of the array.
|
// The remainder fits within one word of the array.
|
||||||
return _array[w].has_any_of(0, size);
|
return _array[w].has_any_of(0, size);
|
||||||
@ -125,11 +130,6 @@ has_any_of(int low_bit, int size) const {
|
|||||||
}
|
}
|
||||||
size -= num_bits_per_word;
|
size -= num_bits_per_word;
|
||||||
++w;
|
++w;
|
||||||
|
|
||||||
if (w >= (int)get_num_words()) {
|
|
||||||
// Now we're up to the highest bits.
|
|
||||||
return (_highest_bits != 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
18
tests/putil/test_bitarray.py
Normal file
18
tests/putil/test_bitarray.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from panda3d.core import BitArray
|
||||||
|
|
||||||
|
|
||||||
|
def test_bitarray_has_any_of():
|
||||||
|
ba = BitArray()
|
||||||
|
assert not ba.has_any_of(100, 200)
|
||||||
|
|
||||||
|
ba = BitArray()
|
||||||
|
ba.set_range(0, 53)
|
||||||
|
assert ba.has_any_of(52, 1)
|
||||||
|
assert ba.has_any_of(52, 100)
|
||||||
|
assert not ba.has_any_of(53, 45)
|
||||||
|
|
||||||
|
ba = BitArray()
|
||||||
|
ba.invert_in_place()
|
||||||
|
assert ba.has_any_of(0, 1)
|
||||||
|
assert ba.has_any_of(53, 45)
|
||||||
|
assert ba.has_any_of(0, 100)
|
Loading…
x
Reference in New Issue
Block a user