mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
parent
3ca3dfd13a
commit
98227daaa5
@ -262,8 +262,8 @@ compare_to(const SparseArray &other) const {
|
||||
return -1;
|
||||
}
|
||||
|
||||
--ai;
|
||||
--bi;
|
||||
++ai;
|
||||
++bi;
|
||||
}
|
||||
|
||||
if (ai != _subranges.rend()) {
|
||||
@ -440,9 +440,9 @@ do_remove_range(int begin, int end) {
|
||||
if (si == _subranges.end()) {
|
||||
if (!_subranges.empty()) {
|
||||
si = _subranges.begin() + _subranges.size() - 1;
|
||||
if ((*si)._end >= begin) {
|
||||
if ((*si)._end > begin) {
|
||||
// The new range shortens the last element of the array on the right.
|
||||
end = std::min(end, (*si)._begin);
|
||||
end = std::max(begin, (*si)._begin);
|
||||
(*si)._end = end;
|
||||
// It might also shorten it on the left; fall through.
|
||||
} else {
|
||||
@ -462,10 +462,10 @@ do_remove_range(int begin, int end) {
|
||||
if (si != _subranges.begin()) {
|
||||
Subranges::iterator si2 = si;
|
||||
--si2;
|
||||
if ((*si2)._end >= begin) {
|
||||
if ((*si2)._end > begin) {
|
||||
// The new range shortens an element within the array on the right
|
||||
// (but does not intersect the next element).
|
||||
end = std::min(end, (*si2)._begin);
|
||||
end = std::max(begin, (*si2)._begin);
|
||||
(*si2)._end = end;
|
||||
// It might also shorten it on the left; fall through.
|
||||
si = si2;
|
||||
@ -488,7 +488,7 @@ do_remove_range(int begin, int end) {
|
||||
}
|
||||
|
||||
// Check if the new range removes any elements to the left.
|
||||
while (begin <= (*si)._begin) {
|
||||
while (begin <= (*si)._begin || (*si)._begin >= (*si)._end) {
|
||||
if (si == _subranges.begin()) {
|
||||
_subranges.erase(si);
|
||||
return;
|
||||
@ -500,6 +500,7 @@ do_remove_range(int begin, int end) {
|
||||
}
|
||||
|
||||
(*si)._end = std::min((*si)._end, begin);
|
||||
nassertv((*si)._end > (*si)._begin);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user