diff options
Diffstat (limited to 'src/corelib/tools/qset.h')
-rw-r--r-- | src/corelib/tools/qset.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h index 1390c67c80..265861198d 100644 --- a/src/corelib/tools/qset.h +++ b/src/corelib/tools/qset.h @@ -254,8 +254,16 @@ Q_INLINE_TEMPLATE QSet<T> &QSet<T>::unite(const QSet<T> &other) template <class T> Q_INLINE_TEMPLATE QSet<T> &QSet<T>::intersect(const QSet<T> &other) { - QSet<T> copy1(*this); - QSet<T> copy2(other); + QSet<T> copy1; + QSet<T> copy2; + if (size() <= other.size()) { + copy1 = *this; + copy2 = other; + } else { + copy1 = other; + copy2 = *this; + *this = copy1; + } typename QSet<T>::const_iterator i = copy1.constEnd(); while (i != copy1.constBegin()) { --i; |