--- qt-x11-free-3.3.8b/src/tools/qglobal.h +++ qt-x11-free-3.3.8b/src/tools/qglobal.h @@ -323,6 +323,13 @@ # if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 # define Q_NO_PACKED_REFERENCE # endif +# if __GNUC__ == 4 && __GNUC_MINOR__ >= 0 +# if __GNUC__ == 4 && __GNUC_MINOR__ >= 7 +# define Q_NO_PACKED_ACCESS +# else +# define Q_NO_PACKED_POINTERS +# endif +# endif # endif # if !defined(__EXCEPTIONS) # define Q_NO_EXCEPTIONS --- qt-x11-free-3.3.8b/src/tools/qlocale.cpp +++ qt-x11-free-3.3.8b/src/tools/qlocale.cpp @@ -3293,7 +3293,11 @@ QString QLocalePrivate::doubleToString(double d, if (zero().unicode() != '0') { for (uint i = 0; i < digits.length(); ++i) +#ifdef Q_NO_PACKED_ACCESS + *digits.ref(i).unicodep() += zero().unicode() - '0'; +#else digits.ref(i).unicode() += zero().unicode() - '0'; +#endif } bool always_show_decpt = flags & Alternate; --- qt-x11-free-3.3.8b/src/tools/qstring.cpp +++ qt-x11-free-3.3.8b/src/tools/qstring.cpp @@ -1933,7 +1933,11 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f if (field_width > 0) { // left padded for (uint i = 0; i < pad_chars; ++i) +#ifdef Q_NO_PACKED_ACCESS + *(rc++)->unicodep() = ' '; +#else (rc++)->unicode() = ' '; +#endif } if (locale_arg) { @@ -1947,7 +1951,11 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f if (field_width < 0) { // right padded for (uint i = 0; i < pad_chars; ++i) +#ifdef Q_NO_PACKED_ACCESS + *(rc++)->unicodep() = ' '; +#else (rc++)->unicode() = ' '; +#endif } if (++repl_cnt == d.occurrences) { --- qt-x11-free-3.3.8b/src/tools/qstring.h +++ qt-x11-free-3.3.8b/src/tools/qstring.h @@ -199,6 +199,10 @@ public: ushort unicode() const { return ucs; } #ifdef Q_NO_PACKED_REFERENCE ushort &unicode() { return *(&ucs); } +#elif defined Q_NO_PACKED_POINTERS + ushort &unicode() { ushort& tmp = ucs; return tmp; } +#elif defined Q_NO_PACKED_ACCESS + ushort *unicodep() { return &ucs; } #else ushort &unicode() { return ucs; } #endif