revert qlist.h commit that seems to induce crashes in qDeleteAll<QList... (QTBUG-22037)

This commit is contained in:
Rex Dieter 2011-10-15 14:34:35 -05:00
parent 59d529bafa
commit a9a1095ff8
2 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,41 @@
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
--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 2011-10-03 22:44:32.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h 2011-10-15 14:25:52.238694974 -0500
@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clea
template <typename T>
Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t)
{
- int index = indexOf(_t);
- if (index == -1)
- return 0;
-
+ detachShared();
const T t = _t;
- 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;
+ 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;
+ }
return removedCount;
}

View File

@ -11,7 +11,7 @@ Summary: Qt toolkit
Name: qt
Epoch: 1
Version: 4.8.0
Release: 0.14.rc1%{?dist}
Release: 0.15.rc1%{?dist}
# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and ASL 2.0 and BSD and FTL and MIT
@ -76,6 +76,9 @@ Patch67: qt-everywhere-opensource-src-4.8.0-beta1-s390.patch
# -Wall + -Werror = fail
Patch68: webkit-qtwebkit-2.2-no_Werror.patch
# revert qlist.h commit that seems to induce crashes in qDeleteAll<QList (QTBUG-22037)
Patch69: qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
# upstream patches
# security patches
@ -392,6 +395,7 @@ rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags
pushd src/3rdparty/webkit
%patch68 -p1 -b .no_Werror
popd
%patch69 -p1 -b .QTBUG-22037
# upstream patches
@ -1024,6 +1028,9 @@ fi
%changelog
* Sat Oct 15 2011 Rex Dieter <rdieter@fedoraproject.org> 4.8.0-0.15.rc1
- revert qlist.h commit that seems to induce crashes in qDeleteAll<QList... (QTBUG-22037)
* Sat Oct 15 2011 Rex Dieter <rdieter@fedoraproject.org> 4.8.0-0.14.rc1
- pkgconfig-style deps