summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWater-Team <water@pad.test.qt.nokia.com>2011-08-31 23:00:13 (GMT)
committerWater-Team <water@pad.test.qt.nokia.com>2011-08-31 23:00:13 (GMT)
commitaa31031ca88d8db0c1c997d50fb789dbe0cb9b55 (patch)
treec3621fe5240e49fc1c260447b4d3cfbf453f07b6 /src
parent7fb04c5964e47e71b709a413be7839a3cedbba9e (diff)
parentf14bbde351d90bed520f9503500f922f7aa18c92 (diff)
downloadQt-aa31031ca88d8db0c1c997d50fb789dbe0cb9b55.zip
Qt-aa31031ca88d8db0c1c997d50fb789dbe0cb9b55.tar.gz
Qt-aa31031ca88d8db0c1c997d50fb789dbe0cb9b55.tar.bz2
Merge branch '4.8-upstream' into master-water
Diffstat (limited to 'src')
-rw-r--r--src/corelib/global/qnamespace.qdoc2
-rw-r--r--src/corelib/io/qdir.cpp6
-rw-r--r--src/corelib/io/qiodevice.cpp2
-rw-r--r--src/corelib/kernel/qmetaobject.cpp11
-rw-r--r--src/corelib/plugin/quuid.cpp6
-rw-r--r--src/corelib/tools/qdatetime.cpp4
-rw-r--r--src/corelib/tools/qlist.cpp4
-rw-r--r--src/corelib/tools/qlist.h31
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp63
-rw-r--r--src/declarative/qml/qdeclarativetypeloader.cpp5
-rw-r--r--src/gui/image/qpnghandler.cpp23
-rw-r--r--src/gui/kernel/qapplication_s60.cpp15
-rw-r--r--src/gui/kernel/qevent.cpp3
-rw-r--r--src/gui/kernel/qt_s60_p.h27
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp4
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp2
-rw-r--r--src/gui/painting/qtessellator.cpp2
-rw-r--r--src/gui/text/qfontengine_p.h3
-rw-r--r--src/gui/text/qrawfont_ft.cpp2
-rw-r--r--src/gui/widgets/qtabbar.cpp2
-rw-r--r--src/network/ssl/qsslcertificate.cpp22
-rw-r--r--src/plugins/platforms/directfb/qdirectfbglcontext.cpp2
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro4
-rw-r--r--src/qt3support/itemviews/q3listbox.cpp6
-rw-r--r--src/qt3support/sql/q3datatable.cpp2
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rwxr-xr-xsrc/s60installs/s60installs.pro9
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask.cpp2
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeview.cpp2
-rw-r--r--src/sql/kernel/qsqlresult.cpp4
-rw-r--r--src/src.pro2
-rw-r--r--src/tools/moc/moc.cpp4
-rw-r--r--src/xml/sax/qxml.cpp8
33 files changed, 215 insertions, 71 deletions
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index dc92866..4974aef 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -539,7 +539,7 @@
string, "ddd MMM d yyyy". See QDate::toString() for more information.
\value ISODate \l{ISO 8601} extended format: either \c{YYYY-MM-DD} for dates or
- \c{YYYY-MM-DDTHH:MM:SS}, \c{YYYY-MM-DDTHH:MM:SSTZD} (e.g., 1997-07-16T19:20:30+01:00)
+ \c{YYYY-MM-DDTHH:mm:ss}, \c{YYYY-MM-DDTHH:mm:ssTZD} (e.g., 1997-07-16T19:20:30+01:00)
for combined dates and times.
\value SystemLocaleShortDate The \l{QLocale::ShortFormat}{short format} used
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index c0c62e1..d9086c1 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -2008,7 +2008,7 @@ QString QDir::cleanPath(const QString &path)
const QChar *p = name.unicode();
for (int i = 0, last = -1, iwrite = 0; i < len; ++i) {
if (p[i] == QLatin1Char('/')) {
- while (i < len-1 && p[i+1] == QLatin1Char('/')) {
+ while (i+1 < len && p[i+1] == QLatin1Char('/')) {
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) //allow unc paths
if (!i)
break;
@@ -2016,9 +2016,9 @@ QString QDir::cleanPath(const QString &path)
i++;
}
bool eaten = false;
- if (i < len - 1 && p[i+1] == QLatin1Char('.')) {
+ if (i+1 < len && p[i+1] == QLatin1Char('.')) {
int dotcount = 1;
- if (i < len - 2 && p[i+2] == QLatin1Char('.'))
+ if (i+2 < len && p[i+2] == QLatin1Char('.'))
dotcount++;
if (i == len - dotcount - 1) {
if (dotcount == 1) {
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index ea00cb4..dae4e82 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -423,6 +423,8 @@ QIODevice::~QIODevice()
seeking backwards and forwards in the data stream. Regular files
are non-sequential.
+ The QIODevice implementation returns false.
+
\sa bytesAvailable()
*/
bool QIODevice::isSequential() const
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index b4c37f4..8597fa3 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -432,9 +432,10 @@ int QMetaObject::constructorCount() const
}
/*!
- Returns the number of methods in this class, including the number of
- properties provided by each base class. These include signals and slots
- as well as normal member functions.
+ Returns the number of methods known to the meta-object system in this class,
+ including the number of properties provided by each base class. These
+ include signals and slots as well as member functions declared with the
+ Q_INVOKABLE macro.
Use code like the following to obtain a QStringList containing the methods
specific to a given class:
@@ -1245,6 +1246,10 @@ bool QMetaObject::invokeMethod(QObject *obj,
tag(), and an access() specifier. You can use invoke() to invoke
the method on an arbitrary QObject.
+ A method will only be registered with the meta-object system if it
+ is a slot, a signal, or declared with the Q_INVOKABLE macro.
+ Constructors can also be registered with Q_INVOKABLE.
+
\sa QMetaObject, QMetaEnum, QMetaProperty, {Qt's Property System}
*/
diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
index af63b79..83c6194 100644
--- a/src/corelib/plugin/quuid.cpp
+++ b/src/corelib/plugin/quuid.cpp
@@ -901,6 +901,12 @@ QUuid QUuid::createUuid()
uint randNumber = 0;
for (int filled = 0; filled < intbits; filled += randbits)
randNumber |= qrand()<<filled;
+#if defined(Q_OS_SYMBIAN)
+ // Symbian does not have /dev/urandom, so entropy is low.
+ // Add more entropy from the kernel tick count (1ms resolution).
+ // big multipler used to splatter the tick count bits over the whole 32 bits
+ randNumber ^= User::NTickCount() * 0x3b9aca07;
+#endif
*(data+chunks) = randNumber;
}
}
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index e33b7d5..e1b4232 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1538,7 +1538,7 @@ int QTime::msec() const
If \a format is Qt::ISODate, the string format corresponds to the
ISO 8601 extended specification for representations of dates,
- which is also HH:MM:SS. (However, contrary to ISO 8601, dates
+ which is also HH:mm:ss. (However, contrary to ISO 8601, dates
before 15 October 1582 are handled as Julian dates, not Gregorian
dates. See \l{QDate G and J} {Use of Gregorian and Julian
Calendars}. This might change in a future version of Qt.)
@@ -2461,7 +2461,7 @@ void QDateTime::setTime_t(uint secsSince1Jan1970UTC)
If the \a format is Qt::ISODate, the string format corresponds
to the ISO 8601 extended specification for representations of
- dates and times, taking the form YYYY-MM-DDTHH:MM:SS[Z|[+|-]HH:MM],
+ dates and times, taking the form YYYY-MM-DDTHH:mm:ss[Z|[+|-]HH:mm],
depending on the timeSpec() of the QDateTime. If the timeSpec()
is Qt::UTC, Z will be appended to the string; if the timeSpec() is
Qt::OffsetFromUTC the offset in hours and minutes from UTC will
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index e68ddd5..18bfe24 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -460,8 +460,8 @@ void **QListData::erase(void **xi)
Note that the internal array only ever gets bigger over the life
of the list. It never shrinks. The internal array is deallocated
- by the destructor and by the assignment operator, when one list
- is assigned to another.
+ by the destructor, by clear(), and by the assignment operator,
+ when one list is assigned to another.
Here's an example of a QList that stores integers and
a QList that stores QDate values:
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);
diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp
index cdf0ab1..1214e46 100644
--- a/src/corelib/tools/qlocale_symbian.cpp
+++ b/src/corelib/tools/qlocale_symbian.cpp
@@ -195,7 +195,9 @@ QByteArray qt_symbianLocaleName(int code)
return qt_resolveSymbianLocaleName(code, ISO);
}
-// order is: normal, abbr, nmode, nmode+abbr
+// Rows are: normal, abbr, nmode, nmode+abbr
+// First three values on a row are used for three component date,
+// while the last two are used for two component date (i.e. no year).
static const char *us_locale_dep[] = {
"MM", "dd", "yyyy", "MM", "dd",
"M", "d", "yy", "M", "d",
@@ -214,6 +216,13 @@ static const char *jp_locale_dep[] = {
"yyyy", "MMMM", "dd", "MMMM", "dd",
"yy", "MMM", "d", "MMM", "d" };
+// 0 = day, 1 = month, 2 = year
+static const int digit_map[] = {
+ 1, 0, 2, 1, 0, // American
+ 0, 1, 2, 0, 1, // European
+ 2, 1, 0, 1, 0 // Japanese
+};
+
/*!
Returns a Qt version of the given \a sys_fmt Symbian locale format string.
*/
@@ -229,6 +238,9 @@ static QString s60ToQtFormat(const QString &sys_fmt)
int i = 0;
bool open_escape = false;
bool abbrev_next = false;
+ bool abbrev_day = false;
+ bool abbrev_month = false;
+ bool abbrev_year = false;
bool locale_indep_ordering = false;
bool minus_mode = false;
bool plus_mode = false;
@@ -305,8 +317,11 @@ static QString s60ToQtFormat(const QString &sys_fmt)
case 'D':
{
- if (!locale_indep_ordering)
+ if (!locale_indep_ordering) {
+ if (abbrev_next)
+ abbrev_day = true;
break;
+ }
if (!abbrev_next)
result += QLatin1String("dd");
@@ -318,8 +333,11 @@ static QString s60ToQtFormat(const QString &sys_fmt)
case 'M':
{
- if (!locale_indep_ordering)
+ if (!locale_indep_ordering) {
+ if (abbrev_next)
+ abbrev_month = true;
break;
+ }
if (!n_mode) {
if (!abbrev_next)
@@ -340,8 +358,11 @@ static QString s60ToQtFormat(const QString &sys_fmt)
{
n_mode = true;
- if (!locale_indep_ordering)
+ if (!locale_indep_ordering) {
+ if (abbrev_next)
+ abbrev_month = true;
break;
+ }
if (!abbrev_next)
result += QLatin1String("MMMM");
@@ -353,8 +374,11 @@ static QString s60ToQtFormat(const QString &sys_fmt)
case 'Y':
{
- if (!locale_indep_ordering)
+ if (!locale_indep_ordering) {
+ if (abbrev_next)
+ abbrev_year = true;
break;
+ }
if (!abbrev_next)
result += QLatin1String("yyyy");
@@ -522,7 +546,9 @@ static QString s60ToQtFormat(const QString &sys_fmt)
const char **locale_dep;
switch (df) {
- default: // fallthru to american
+ default:
+ df = EDateAmerican;
+ // fallthru to american
case EDateAmerican:
locale_dep = us_locale_dep;
break;
@@ -534,12 +560,33 @@ static QString s60ToQtFormat(const QString &sys_fmt)
break;
}
int offset = 0;
- if (abbrev_next)
+ int adjustedDigit = c.digitValue() - 1;
+
+ bool abbrev_this = abbrev_next;
+ // If abbreviation specified for this digit, use that.
+ // Otherwise abbreviate according to %D, %M, and %Y specified previously.
+ if (!abbrev_this) {
+ switch (digit_map[adjustedDigit + (static_cast<int>(df) * 5)]) {
+ case 0:
+ abbrev_this = abbrev_day;
+ break;
+ case 1:
+ abbrev_this = abbrev_month;
+ break;
+ case 2:
+ abbrev_this = abbrev_year;
+ break;
+ default:
+ break; // never happens
+ }
+ }
+
+ if (abbrev_this)
offset += 5;
if (n_mode)
offset += 10;
- result += QLatin1String(locale_dep[offset + (c.digitValue()-1)]);
+ result += QLatin1String(locale_dep[offset + (adjustedDigit)]);
break;
}
diff --git a/src/declarative/qml/qdeclarativetypeloader.cpp b/src/declarative/qml/qdeclarativetypeloader.cpp
index 168c151..82197dc 100644
--- a/src/declarative/qml/qdeclarativetypeloader.cpp
+++ b/src/declarative/qml/qdeclarativetypeloader.cpp
@@ -65,6 +65,11 @@ The QDeclarativeDataLoader invokes callbacks on the QDeclarativeDataBlob as data
*/
/*!
+ \class QDeclarativeTypeLoader
+ \internal
+*/
+
+/*!
\enum QDeclarativeDataBlob::Status
This enum describes the status of the data blob.
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index f7d07a5..1714442 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -58,6 +58,29 @@
#include <pngconf.h>
#endif
+#if PNG_LIBPNG_VER >= 10400 && PNG_LIBPNG_VER <= 10502 \
+ && defined(PNG_PEDANTIC_WARNINGS_SUPPORTED)
+/*
+ Versions 1.4.0 to 1.5.2 of libpng declare png_longjmp_ptr to
+ have a noreturn attribute if PNG_PEDANTIC_WARNINGS_SUPPORTED
+ is enabled, but most declarations of longjmp in the wild do
+ not add this attribute. This causes problems when the png_jmpbuf
+ macro expands to calling png_set_longjmp_fn with a mismatched
+ longjmp, as compilers such as Clang will treat this as an error.
+
+ To work around this we override the png_jmpbuf macro to cast
+ longjmp to a png_longjmp_ptr.
+*/
+# undef png_jmpbuf
+# ifdef PNG_SETJMP_SUPPORTED
+# define png_jmpbuf(png_ptr) \
+ (*png_set_longjmp_fn((png_ptr), (png_longjmp_ptr)longjmp, sizeof(jmp_buf)))
+# else
+# define png_jmpbuf(png_ptr) \
+ (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP)
+# endif
+#endif
+
#ifdef Q_OS_WINCE
#define CALLBACK_CALL_TYPE __cdecl
#else
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index da1c778..361af8b 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -582,13 +582,20 @@ QPoint QSymbianControl::translatePointForFixedNativeOrientation(const TPoint &po
{
QPoint pos(pointerEventPos.iX, pointerEventPos.iY);
if (qwidget->d_func()->fixNativeOrientationCalled) {
- QSize wsize = qwidget->size();
- TSize size = Size();
+ QSize wsize = qwidget->size(); // always same as the size in the native orientation
+ TSize size = Size(); // depends on the current orientation
if (size.iWidth == wsize.height() && size.iHeight == wsize.width()) {
qreal x = pos.x();
qreal y = pos.y();
- pos.setX(size.iHeight - y);
- pos.setY(x);
+ if (S60->screenRotation == QS60Data::ScreenRotation90) {
+ // DisplayRightUp
+ pos.setX(size.iHeight - y);
+ pos.setY(x);
+ } else if (S60->screenRotation == QS60Data::ScreenRotation270) {
+ // DisplayLeftUp
+ pos.setX(y);
+ pos.setY(size.iWidth - x);
+ }
}
}
return pos;
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index de2d87e..e1df267 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -142,8 +142,7 @@ QInputEvent::~QInputEvent()
and QWidget::mouseMoveEvent() to receive mouse events in your own
widgets.
- \sa QWidget::setMouseTracking() QWidget::grabMouse()
- QCursor::pos()
+ \sa QWidget::setMouseTracking() QWidget::grabMouse() QCursor::pos()
*/
/*!
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index ada52a0..01d5f22 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -77,6 +77,7 @@
#include <akncontext.h> // CAknContextPane
#include <eikspane.h> // CEikStatusPane
#include <AknPopupFader.h> // MAknFadedComponent and TAknPopupFader
+#include <bitstd.h> // EGraphicsOrientation constants
#ifdef QT_SYMBIAN_HAVE_AKNTRANSEFFECT_H
#include <gfxtranseffect/gfxtranseffect.h> // BeginFullScreen
#include <akntranseffect.h> // BeginFullScreen
@@ -205,6 +206,14 @@ public:
int nativeScreenWidthInPixels;
int nativeScreenHeightInPixels;
+ enum ScreenRotation {
+ ScreenRotation0, // portrait (or the native orientation)
+ ScreenRotation90, // typically DisplayLeftUp landscape
+ ScreenRotation180, // not used
+ ScreenRotation270 // DisplayRightUp landscape when 3-way orientation is supported
+ };
+ ScreenRotation screenRotation;
+
int beginFullScreenCalled : 1;
int endFullScreenCalled : 1;
};
@@ -376,6 +385,24 @@ inline void QS60Data::updateScreenSize()
inches = S60->screenWidthInTwips / (TReal)KTwipsPerInch;
S60->defaultDpiX = S60->screenWidthInPixels / inches;
+ switch (params.iRotation) {
+ case CFbsBitGc::EGraphicsOrientationNormal:
+ S60->screenRotation = ScreenRotation0;
+ break;
+ case CFbsBitGc::EGraphicsOrientationRotated90:
+ S60->screenRotation = ScreenRotation90;
+ break;
+ case CFbsBitGc::EGraphicsOrientationRotated180:
+ S60->screenRotation = ScreenRotation180;
+ break;
+ case CFbsBitGc::EGraphicsOrientationRotated270:
+ S60->screenRotation = ScreenRotation270;
+ break;
+ default:
+ S60->screenRotation = ScreenRotation0;
+ break;
+ }
+
int screens = S60->screenCount();
for (int i = 0; i < screens; ++i) {
CWsScreenDevice *dev = S60->screenDevice(i);
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 9826689..36786c4 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3552,7 +3552,7 @@ void QRasterPaintEngine::drawBitmap(const QPointF &pos, const QImage &image, QSp
spans[n].y = y;
spans[n].coverage = 255;
int len = 1;
- while (src_x < w-1 && src[(src_x+1) >> 3] & (0x1 << ((src_x+1) & 7))) {
+ while (src_x+1 < w && src[(src_x+1) >> 3] & (0x1 << ((src_x+1) & 7))) {
++src_x;
++len;
}
@@ -3578,7 +3578,7 @@ void QRasterPaintEngine::drawBitmap(const QPointF &pos, const QImage &image, QSp
spans[n].y = y;
spans[n].coverage = 255;
int len = 1;
- while (src_x < w-1 && src[(src_x+1) >> 3] & (0x80 >> ((src_x+1) & 7))) {
+ while (src_x+1 < w && src[(src_x+1) >> 3] & (0x80 >> ((src_x+1) & 7))) {
++src_x;
++len;
}
diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp
index 147d2ec..17d141c 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -2333,7 +2333,7 @@ static QPainterPath path_for_glyphs(const QVarLengthArray<glyph_t> &glyphs,
bool set = src[x >> 3] & (0x80 >> (x & 7));
if (set) {
QRect r(xp + x, yp - h, 1, 1);
- while (x < glyph->width-1 && src[(x+1) >> 3] & (0x80 >> ((x+1) & 7))) {
+ while (x+1 < glyph->width && src[(x+1) >> 3] & (0x80 >> ((x+1) & 7))) {
++x;
r.setRight(r.right()+1);
}
diff --git a/src/gui/painting/qtessellator.cpp b/src/gui/painting/qtessellator.cpp
index c469438..94a5128 100644
--- a/src/gui/painting/qtessellator.cpp
+++ b/src/gui/painting/qtessellator.cpp
@@ -893,7 +893,7 @@ void QTessellatorPrivate::processIntersections()
QDEBUG() << " adding edge on left";
--min;
}
- while (max < scanline.size - 1 && scanline.edges[max + 1]->positionAt(y) <= xmax) {
+ while (max + 1 < scanline.size && scanline.edges[max + 1]->positionAt(y) <= xmax) {
QDEBUG() << " adding edge on right";
++max;
}
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index a70aec1..8d81acb 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -155,6 +155,7 @@ public:
struct FaceId {
FaceId() : index(0), encoding(0) {}
QByteArray filename;
+ QByteArray uuid;
int index;
int encoding;
};
@@ -295,7 +296,7 @@ inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId
inline uint qHash(const QFontEngine::FaceId &f)
{
- return qHash((f.index << 16) + f.encoding) + qHash(f.filename);
+ return qHash((f.index << 16) + f.encoding) + qHash(f.filename + f.uuid);
}
diff --git a/src/gui/text/qrawfont_ft.cpp b/src/gui/text/qrawfont_ft.cpp
index 5bba221..1666df3 100644
--- a/src/gui/text/qrawfont_ft.cpp
+++ b/src/gui/text/qrawfont_ft.cpp
@@ -45,6 +45,7 @@
#include "qrawfont_p.h"
#include "qfontengine_ft_p.h"
+#include "quuid.h"
#if defined(Q_WS_X11) && !defined(QT_NO_FONTCONFIG)
# include "qfontengine_x11_p.h"
@@ -87,6 +88,7 @@ public:
FaceId faceId;
faceId.filename = "";
faceId.index = 0;
+ faceId.uuid = QUuid::createUuid().toByteArray();
return init(faceId, true, Format_None, fontData);
}
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 16e4aad..8faf156 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -171,7 +171,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const
if (tabIndex > 0 && tabIndex - 1 == d->currentIndex)
option->selectedPosition = QStyleOptionTab::PreviousIsSelected;
- else if (tabIndex < totalTabs - 1 && tabIndex + 1 == d->currentIndex)
+ else if (tabIndex + 1 < totalTabs && tabIndex + 1 == d->currentIndex)
option->selectedPosition = QStyleOptionTab::NextIsSelected;
else
option->selectedPosition = QStyleOptionTab::NotAdjacent;
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 76b7d41..ab09932 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -783,22 +783,24 @@ QList<QSslCertificate> QSslCertificatePrivate::certificatesFromDer(const QByteAr
// These certificates are known to be fraudulent and were created during the comodo
// compromise. See http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html
static const char *certificate_blacklist[] = {
- "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e",
- "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06",
- "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3",
- "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29",
- "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71",
- "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47",
- "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43",
- "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0",
- "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0",
+ "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e", "mail.google.com", // Comodo
+ "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06", "www.google.com", // Comodo
+ "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3", "login.yahoo.com", // Comodo
+ "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29", "login.yahoo.com", // Comodo
+ "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71", "login.yahoo.com", // Comodo
+ "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47", "login.skype.com", // Comodo
+ "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43", "addons.mozilla.org", // Comodo
+ "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0", "login.live.com", // Comodo
+ "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0", "global trustee", // Comodo
+ "05:e2:e6:a4:cd:09:ea:54:d6:65:b0:75:fe:22:a2:56", "*.google.com", // DigiNotar
0
};
bool QSslCertificatePrivate::isBlacklisted(const QSslCertificate &certificate)
{
for (int a = 0; certificate_blacklist[a] != 0; a++) {
- if (certificate.serialNumber() == certificate_blacklist[a])
+ if (certificate.serialNumber() == certificate_blacklist[a++] &&
+ certificate.subjectInfo(QSslCertificate::CommonName) == QString::fromUtf8(certificate_blacklist[a]))
return true;
}
return false;
diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
index 8a40b24..aca28f1 100644
--- a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
@@ -41,7 +41,7 @@
#include "qdirectfbglcontext.h"
-#include <directfb/directfbgl.h>
+#include <directfbgl.h>
#include <QDebug>
diff --git a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro
index 0d233e6..382217a 100644
--- a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro
+++ b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro
@@ -4,6 +4,8 @@ TEMPLATE = subdirs
# We just want to export the sqlite3 binaries for Symbian for platforms that do not have them.
symbian-abld|symbian-sbsv2 {
!symbian_no_export_sqlite:!exists($${EPOCROOT}epoc32/release/armv5/lib/sqlite3.dso) {
- BLD_INF_RULES.prj_exports += ":zip SQLite3_v9.2.zip"
+ # Symbian exports do not like drive letter, so remove it from the source dir
+ SQLITE_SRC_DIR = $$relativeProPath()
+ BLD_INF_RULES.prj_exports += ":zip $$SQLITE_SRC_DIR/SQLite3_v9.2.zip"
}
}
diff --git a/src/qt3support/itemviews/q3listbox.cpp b/src/qt3support/itemviews/q3listbox.cpp
index 796a3b8..f1574df 100644
--- a/src/qt3support/itemviews/q3listbox.cpp
+++ b/src/qt3support/itemviews/q3listbox.cpp
@@ -3531,9 +3531,9 @@ void Q3ListBox::refreshSlot()
int col = columnAt(x);
int row = rowAt(y);
int top = row;
- while(col < (int)d->columnPos.size()-1 && d->columnPos[col+1] < x)
+ while(col+1 < (int)d->columnPos.size() && d->columnPos[col+1] < x)
col++;
- while(top < (int)d->rowPos.size()-1 && d->rowPos[top+1] < y)
+ while(top+1 < (int)d->rowPos.size() && d->rowPos[top+1] < y)
top++;
Q3ListBoxItem * i = item(col * numRows() + row);
@@ -3684,7 +3684,7 @@ int Q3ListBox::columnAt(int x) const
return numColumns() - 1;
int col = 0;
- while(col < (int)d->columnPos.size()-1 && d->columnPos[col+1] < x)
+ while(col+1 < (int)d->columnPos.size() && d->columnPos[col+1] < x)
col++;
return col;
}
diff --git a/src/qt3support/sql/q3datatable.cpp b/src/qt3support/sql/q3datatable.cpp
index 39ef1d9..35e9fda 100644
--- a/src/qt3support/sql/q3datatable.cpp
+++ b/src/qt3support/sql/q3datatable.cpp
@@ -710,7 +710,7 @@ bool Q3DataTable::eventFilter( QObject *o, QEvent *e )
return true;
}
if ( d->dat.mode() != QSql::None ) {
- if ( (ke->key() == Qt::Key_Tab) && (c < numCols() - 1) && (!isColumnReadOnly( c+1 ) || d->dat.mode() == QSql::Insert) )
+ if ( (ke->key() == Qt::Key_Tab) && (c+1 < numCols()) && (!isColumnReadOnly( c+1 ) || d->dat.mode() == QSql::Insert) )
d->continuousEdit = true;
else if ( (ke->key() == Qt::Key_BackTab) && (c > 0) && (!isColumnReadOnly( c-1 ) || d->dat.mode() == QSql::Insert) )
d->continuousEdit = true;
diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index dc1476c..c367c0c 100644
--- a/src/qt3support/text/q3richtext.cpp
+++ b/src/qt3support/text/q3richtext.cpp
@@ -121,7 +121,7 @@ static inline bool isBreakable(Q3TextString *string, int pos)
{
if (string->at(pos).nobreak)
return false;
- return (pos < string->length()-1 && string->at(pos+1).softBreak);
+ return (pos+1 < string->length() && string->at(pos+1).softBreak);
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index a43c3df..c2b462c 100755
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -27,13 +27,16 @@ symbian: {
$$QMAKE_LIBDIR_QT/QtTest$${QT_LIBINFIX}.dll \
$$QMAKE_LIBDIR_QT/QtSql$${QT_LIBINFIX}.dll
+ # Symbian exports do not like absolute paths, so generate a relative path to original .pro file dir
+ S60_INSTALLS_SOURCE_DIR = $$relativeProPath()
+
symbian-abld|symbian-sbsv2 {
pluginLocations = $${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET)
bearerPluginLocation = $${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET)
bearerStubZ = $${EPOCROOT}$${HW_ZDIR}$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin
BLD_INF_RULES.prj_exports += \
- "qsymbianbearer.qtplugin /$${HW_ZDIR}$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin" \
- "qsymbianbearer.qtplugin /epoc32/winscw/c$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin"
+ "$$S60_INSTALLS_SOURCE_DIR/qsymbianbearer.qtplugin /$${HW_ZDIR}$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin" \
+ "$$S60_INSTALLS_SOURCE_DIR/qsymbianbearer.qtplugin /epoc32/winscw/c$${QT_PLUGINS_BASE_DIR}/bearer/qsymbianbearer$${QT_LIBINFIX}.qtplugin"
} else {
pluginLocations = $$QT_BUILD_TREE/plugins/s60
bearerPluginLocation = $$QT_BUILD_TREE/plugins/bearer
@@ -171,5 +174,5 @@ symbian: {
qtlibraries.files += $$QMAKE_LIBDIR_QT/QtMultimedia$${QT_LIBINFIX}.dll
}
- BLD_INF_RULES.prj_exports += "qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)"
+ BLD_INF_RULES.prj_exports += "$$S60_INSTALLS_SOURCE_DIR/qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)"
}
diff --git a/src/scripttools/debugging/qscriptcompletiontask.cpp b/src/scripttools/debugging/qscriptcompletiontask.cpp
index fb250b7..3c94a21 100644
--- a/src/scripttools/debugging/qscriptcompletiontask.cpp
+++ b/src/scripttools/debugging/qscriptcompletiontask.cpp
@@ -172,7 +172,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression()
while ((pos > 0) && isIdentChar(contents.at(pos-1)))
--pos;
int pos2 = cursorPosition - 1;
- while ((pos2 < contents.size()-1) && isIdentChar(contents.at(pos2+1)))
+ while ((pos2+1 < contents.size()) && isIdentChar(contents.at(pos2+1)))
++pos2;
QString ident = contents.mid(pos, pos2 - pos + 1);
position = pos;
diff --git a/src/scripttools/debugging/qscriptdebuggercodeview.cpp b/src/scripttools/debugging/qscriptdebuggercodeview.cpp
index 7c99723..65fd366 100644
--- a/src/scripttools/debugging/qscriptdebuggercodeview.cpp
+++ b/src/scripttools/debugging/qscriptdebuggercodeview.cpp
@@ -233,7 +233,7 @@ bool QScriptDebuggerCodeView::event(QEvent *e)
return false;
}
int pos2 = linePosition - 1;
- while ((pos2 < contents.size()-1) && isIdentChar(contents.at(pos2+1)))
+ while ((pos2+1 < contents.size()) && isIdentChar(contents.at(pos2+1)))
++pos2;
QString ident = contents.mid(pos, pos2 - pos + 1);
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index f2b2ccf..71a81c0 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -183,7 +183,7 @@ QString QSqlResultPrivate::namedToPositionalBinding()
QChar ch = sql.at(i);
if (ch == QLatin1Char(':') && !inQuote
&& (i == 0 || sql.at(i - 1) != QLatin1Char(':'))
- && (i < n - 1 && qIsAlnum(sql.at(i + 1)))) {
+ && (i + 1 < n && qIsAlnum(sql.at(i + 1)))) {
int pos = i + 2;
while (pos < n && qIsAlnum(sql.at(pos)))
++pos;
@@ -618,7 +618,7 @@ bool QSqlResult::prepare(const QString& query)
QChar ch = query.at(i);
if (ch == QLatin1Char(':') && !inQuote
&& (i == 0 || query.at(i - 1) != QLatin1Char(':'))
- && (i < n - 1 && qIsAlnum(query.at(i + 1)))) {
+ && (i + 1 < n && qIsAlnum(query.at(i + 1)))) {
int pos = i + 2;
while (pos < n && qIsAlnum(query.at(pos)))
++pos;
diff --git a/src/src.pro b/src/src.pro
index 9e29b89..9314fbd 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -11,7 +11,7 @@ nacl: SRC_SUBDIRS -= src_network src_testlib
!wince*:!symbian:!vxworks:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support
!wince*:!symbian-abld:!symbian-sbsv2:include(tools/tools.pro)
-win32:SRC_SUBDIRS += src_activeqt
+win32:!win32-g++*:SRC_SUBDIRS += src_activeqt
contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2): SRC_SUBDIRS += src_opengl
contains(QT_CONFIG, openvg): SRC_SUBDIRS += src_openvg
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 13f57f5..9309db1 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -216,8 +216,8 @@ Type Moc::parseType()
QByteArray templ = lexemUntil(RANGLE);
for (int i = 0; i < templ.size(); ++i) {
type.name += templ.at(i);
- if ((templ.at(i) == '<' && i < templ.size()-1 && templ.at(i+1) == ':')
- || (templ.at(i) == '>' && i < templ.size()-1 && templ.at(i+1) == '>')) {
+ if ((templ.at(i) == '<' && i+1 < templ.size() && templ.at(i+1) == ':')
+ || (templ.at(i) == '>' && i+1 < templ.size() && templ.at(i+1) == '>')) {
type.name += ' ';
}
}
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index 2f5384b..0c7f2ab 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -7748,7 +7748,13 @@ bool QXmlSimpleReaderPrivate::processReference()
return false;
}
if (ret) {
- QString xmlRefString = ret->data();
+ QString xmlRefString;
+ QString buffer = ret->data();
+ while (buffer.length()>0){
+ xmlRefString += buffer;
+ ret->fetchData();
+ buffer = ret->data();
+ }
delete ret;
if (!stripTextDecl(xmlRefString)) {
reportParseError(QLatin1String(XMLERR_ERRORINTEXTDECL));