diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2011-08-31 01:46:11 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-08-31 01:46:11 (GMT) |
commit | 1e48d40597bbe12321a5a3e42b3595dc17a7f8e7 (patch) | |
tree | 16bc5824f55124f1be742cc5c3f55f94e223fee1 /src/corelib/tools | |
parent | c57195dc899ca732083487ed069ef813c340c0b5 (diff) | |
parent | e95de30977291a251660f72baa84b5ff244711fb (diff) | |
download | Qt-1e48d40597bbe12321a5a3e42b3595dc17a7f8e7.zip Qt-1e48d40597bbe12321a5a3e42b3595dc17a7f8e7.tar.gz Qt-1e48d40597bbe12321a5a3e42b3595dc17a7f8e7.tar.bz2 |
Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
don't crash when destroying the shortcuts
Disable activeqt on win32-g++ (it doesn't build).
fix warning
remove unused functions
Make the DBus timeout configurable in QDBusAbstractInterface.
Fix a typo in qt-conf docs.
Revert "Fix build with the Clang compiler"
Added missing no_include_pwd check
Replace 'i < len-1 && func(i+1)' by 'i+1 < len && func(i+1)'
Fix build with the Clang compiler
Change spacing of title in offline style.
Add support for rawFonts loaded from data in FaceId
examples: fix compilation with namespaced Qt.
Russian translation update
Update Japanese translations for Qt 4.8.
directfb: Include directfbgl.h directly
tests: fix QNetworkProxyFactory test
don't detach until the list is going to be modified
optimize QList::removeAll()
Diffstat (limited to 'src/corelib/tools')
-rw-r--r-- | src/corelib/tools/qlist.h | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h index 4eb05d6..9f7b23f 100644 --- a/src/corelib/tools/qlist.h +++ b/src/corelib/tools/qlist.h @@ -769,25 +769,32 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clear() template <typename T> Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t) { - detachShared(); + int index = indexOf(_t); + if (index == -1) + return 0; + const T t = _t; - int removedCount=0, i=0; - Node *n; - while (i < p.size()) - if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) { - node_destruct(n); - p.remove(i); - ++removedCount; - } else { - ++i; - } + detach(); + + Node *i = reinterpret_cast<Node *>(p.at(index)); + Node *e = reinterpret_cast<Node *>(p.end()); + Node *n = i; + node_destruct(i); + while (++i != e) { + if (i->t() == t) + node_destruct(i); + else + *n++ = *i; + } + + int removedCount = e - n; + d->end -= removedCount; return removedCount; } template <typename T> Q_OUTOFLINE_TEMPLATE bool QList<T>::removeOne(const T &_t) { - detachShared(); int index = indexOf(_t); if (index != -1) { removeAt(index); |