Skip to content

Commit 363e04d

Browse files
authored
Merge pull request #242 from jeking3/coverity-255065
issue-204: period::intersects incorrect for empty periods
2 parents 645574e + 64c1df1 commit 363e04d

2 files changed

Lines changed: 5 additions & 7 deletions

File tree

include/boost/date_time/period.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,7 @@ namespace date_time {
299299
inline BOOST_CXX14_CONSTEXPR
300300
bool period<point_rep,duration_rep>::intersects(const period<point_rep,duration_rep>& other) const
301301
{
302-
return ( contains(other.begin_) ||
303-
other.contains(begin_) ||
304-
((other.begin_ < begin_) && (other.last_ >= begin_)));
302+
return !is_null() && !other.is_null() && (begin_ < other.end()) && (other.begin_ < end());
305303
}
306304

307305
//! Returns the period of intersection or invalid range no intersection

test/testgeneric_period.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ int main(){
125125
check("Contains rep", !zero_len.contains(3));
126126
check("Contains period (not)", !zero_len.contains(a_period(5,8)));
127127
check("Contains period", p1.contains(zero_len));
128-
check("Intersects", zero_len.intersects(p1));
129-
check("Intersects", p1.intersects(zero_len));
128+
check("Intersects", !zero_len.intersects(p1));
129+
check("Intersects", !p1.intersects(zero_len));
130130
check("Adjacent", zero_len.is_adjacent(a_period(-10,3)));
131131
check("Adjacent", a_period(-10,3).is_adjacent(zero_len));
132132
check("Intersection", (zero_len.intersection(p1) == zero_len));
@@ -146,8 +146,8 @@ int main(){
146146
check("Contains rep in-between (always false)", !null_per.contains(3));
147147
check("Contains period (not)", !null_per.contains(a_period(7,9)));
148148
check("Contains period", p1.contains(null_per));
149-
check("Intersects", null_per.intersects(p1));
150-
check("Intersects", p1.intersects(null_per));
149+
check("Intersects", !null_per.intersects(p1));
150+
check("Intersects", !p1.intersects(null_per));
151151
check("Adjacent", null_per.is_adjacent(a_period(-10,5)));
152152
check("Adjacent", null_per.is_adjacent(a_period(1,10)));
153153

0 commit comments

Comments
 (0)