Blame SOURCES/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch

2060a3
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h
2060a3
--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037	2011-10-03 22:44:32.000000000 -0500
2060a3
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h	2011-10-15 14:25:52.238694974 -0500
2060a3
@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clea
2060a3
 template <typename T>
2060a3
 Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t)
2060a3
 {
2060a3
-    int index = indexOf(_t);
2060a3
-    if (index == -1)
2060a3
-        return 0;
2060a3
-
2060a3
+    detachShared();
2060a3
     const T t = _t;
2060a3
-    detach();
2060a3
-
2060a3
-    Node *i = reinterpret_cast<Node *>(p.at(index));
2060a3
-    Node *e = reinterpret_cast<Node *>(p.end());
2060a3
-    Node *n = i;
2060a3
-    node_destruct(i);
2060a3
-    while (++i != e) {
2060a3
-        if (i->t() == t)
2060a3
-            node_destruct(i);
2060a3
-        else
2060a3
-            *n++ = *i;
2060a3
-    }
2060a3
-
2060a3
-    int removedCount = e - n;
2060a3
-    d->end -= removedCount;
2060a3
+    int removedCount=0, i=0;
2060a3
+    Node *n;
2060a3
+    while (i < p.size())
2060a3
+        if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) {
2060a3
+            node_destruct(n);
2060a3
+            p.remove(i);
2060a3
+            ++removedCount;
2060a3
+        } else {
2060a3
+            ++i;
2060a3
+        }
2060a3
     return removedCount;
2060a3
 }
2060a3