diff --git a/src/recurrence.cpp b/src/recurrence.cpp --- a/src/recurrence.cpp +++ b/src/recurrence.cpp @@ -1361,7 +1361,7 @@ return; } - d->mRDateTimes.insertSorted(rdate); + setInsert(d->mRDateTimes, rdate); updated(); } @@ -1387,7 +1387,7 @@ return; } - d->mRDates.insertSorted(rdate); + setInsert(d->mRDates, rdate); updated(); } @@ -1412,7 +1412,7 @@ return; } - d->mExDateTimes.insertSorted(exdate); + setInsert(d->mExDateTimes, exdate); updated(); } @@ -1442,7 +1442,7 @@ return; } - d->mExDates.insertSorted(exdate); + setInsert(d->mExDates, exdate); updated(); } diff --git a/src/recurrencehelper_p.h b/src/recurrencehelper_p.h --- a/src/recurrencehelper_p.h +++ b/src/recurrencehelper_p.h @@ -45,6 +45,15 @@ } } +template +inline void setInsert(Container &c, const Value &v) +{ + const auto it = std::lower_bound(c.begin(), c.end(), v); + if (it == c.end() || *it != v) { + c.insert(it, v); + } +} + } #endif