rpms/qt4/devel qt-43-aliasing.diff,NONE,1.1 qt4.spec,1.77,1.78
Than Ngo (than)
fedora-extras-commits at redhat.com
Mon Jan 7 17:09:06 UTC 2008
Author: than
Update of /cvs/extras/rpms/qt4/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv5747
Modified Files:
qt4.spec
Added Files:
qt-43-aliasing.diff
Log Message:
apply patch from Dirk Müller to fix strict aliasing violations in tool classes
qt-43-aliasing.diff:
--- NEW FILE qt-43-aliasing.diff ---
--- src/corelib/tools/qmap.h
+++ src/corelib/tools/qmap.h
@@ -185,6 +185,7 @@ public:
class iterator
{
+ friend class const_iterator;
QMapData::Node *i;
public:
@@ -240,9 +241,9 @@ public:
public:
#endif
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
private:
// ### Qt 5: remove
@@ -252,6 +253,7 @@ public:
class const_iterator
{
+ friend class iterator;
QMapData::Node *i;
public:
@@ -270,7 +272,7 @@ public:
#else
inline const_iterator(const iterator &o)
#endif
- { i = reinterpret_cast<const const_iterator &>(o).i; }
+ { i = o.i; }
inline const Key &key() const { return concrete(i)->key; }
inline const T &value() const { return concrete(i)->value; }
--- src/corelib/tools/qset.h
+++ src/corelib/tools/qset.h
@@ -84,6 +84,7 @@ public:
{
typedef QHash<T, QHashDummyValue> Hash;
typename Hash::iterator i;
+ friend class const_iterator;
public:
typedef std::bidirectional_iterator_tag iterator_category;
@@ -101,9 +102,9 @@ public:
inline bool operator==(const iterator &o) const { return i == o.i; }
inline bool operator!=(const iterator &o) const { return i != o.i; }
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { iterator r = *this; ++i; return r; }
inline iterator &operator--() { --i; return *this; }
@@ -118,6 +119,7 @@ public:
{
typedef QHash<T, QHashDummyValue> Hash;
typename Hash::const_iterator i;
+ friend class iterator;
public:
typedef std::bidirectional_iterator_tag iterator_category;
@@ -130,7 +132,7 @@ public:
inline const_iterator(typename Hash::const_iterator o) : i(o) {}
inline const_iterator(const const_iterator &o) : i(o.i) {}
inline const_iterator(const iterator &o)
- : i(reinterpret_cast<const const_iterator &>(o).i) {}
+ : i(o.i) {}
inline const_iterator &operator=(const const_iterator &o) { i = o.i; return *this; }
inline const T &operator*() const { return i.key(); }
inline const T *operator->() const { return &i.key(); }
--- src/corelib/tools/qhash.h
+++ src/corelib/tools/qhash.h
@@ -291,6 +291,7 @@ public:
class iterator
{
+ friend class const_iterator;
QHashData::Node *i;
public:
@@ -343,9 +344,9 @@ public:
public:
#endif
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
private:
// ### Qt 5: remove
@@ -355,6 +356,7 @@ public:
class const_iterator
{
+ friend class iterator;
QHashData::Node *i;
public:
@@ -374,7 +376,7 @@ public:
#else
inline const_iterator(const iterator &o)
#endif
- { i = reinterpret_cast<const const_iterator &>(o).i; }
+ { i = o.i; }
inline const Key &key() const { return concrete(i)->key; }
inline const T &value() const { return concrete(i)->value; }
--- src/corelib/tools/qlist.h
+++ src/corelib/tools/qlist.h
@@ -162,17 +162,17 @@ public:
inline bool operator>=(const iterator& other) const { return i >= other.i; }
#ifndef QT_STRICT_ITERATORS
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
inline bool operator<(const const_iterator& other) const
- { return i < reinterpret_cast<const iterator &>(other).i; }
+ { return i < other.i; }
inline bool operator<=(const const_iterator& other) const
- { return i <= reinterpret_cast<const iterator &>(other).i; }
+ { return i <= other.i; }
inline bool operator>(const const_iterator& other) const
- { return i > reinterpret_cast<const iterator &>(other).i; }
+ { return i > other.i; }
inline bool operator>=(const const_iterator& other) const
- { return i >= reinterpret_cast<const iterator &>(other).i; }
+ { return i >= other.i; }
#endif
inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { Node *n = i; ++i; return n; }
--- src/corelib/tools/qlinkedlist.h
+++ src/corelib/tools/qlinkedlist.h
@@ -119,9 +119,9 @@ public:
inline bool operator==(const iterator &o) const { return i == o.i; }
inline bool operator!=(const iterator &o) const { return i != o.i; }
inline bool operator==(const const_iterator &o) const
- { return i == reinterpret_cast<const iterator &>(o).i; }
+ { return i == o.i; }
inline bool operator!=(const const_iterator &o) const
- { return i != reinterpret_cast<const iterator &>(o).i; }
+ { return i != o.i; }
inline iterator &operator++() { i = i->n; return *this; }
inline iterator operator++(int) { Node *n = i; i = i->n; return n; }
inline iterator &operator--() { i = i->p; return *this; }
Index: qt4.spec
===================================================================
RCS file: /cvs/extras/rpms/qt4/devel/qt4.spec,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- qt4.spec 21 Dec 2007 18:12:45 -0000 1.77
+++ qt4.spec 7 Jan 2008 17:08:30 -0000 1.78
@@ -4,7 +4,7 @@
Summary: Qt toolkit
Name: qt4
Version: 4.3.3
-Release: 2%{?dist}
+Release: 3%{?dist}
# GPLv2+exceptions(see GPL_EXCEPTIONS*.txt)
License: GPLv2
@@ -29,6 +29,9 @@
Patch1: qt-x11-opensource-src-4.3.0-qassistant-qt4.patch
# multilib hacks
Patch2: qt-x11-opensource-src-4.2.2-multilib.patch
+# strict aliasing violations in tool classes
+Patch3: qt-43-aliasing.diff
+
## qt-copy patches
Source10: qt4-wrapper.sh
@@ -227,6 +230,7 @@
%patch1 -p1 -b .assistant4
# don't use -b on mkspec files, else they get installed too.
%patch2 -p1
+%patch3 -p0
# drop -fexceptions from $RPM_OPT_FLAGS
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
@@ -637,6 +641,9 @@
%changelog
+* Mon Jan 07 2008 Than Ngo <than at redhat.com> 4.3.3-3
+- apply patch from Dirk Müller to fix strict aliasing violations in tool classes
+
* Fri Dec 21 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 4.3.3-2
- -doc: Requires: %%name-assistant, omit assistant bin,
-x11: Provides: %%name-assistant (#147948)
More information about the fedora-extras-commits
mailing list