diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2011-02-08 18:42:53 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-02-08 18:42:53 (GMT) |
commit | 8fc05466a50bcf255900849d787790abd2bf6957 (patch) | |
tree | 41e4544008c194354dc925388e2826984df262f0 /src/gui | |
parent | ca4213b45f5f65ebbc7e5143a2940f87c5ca28fa (diff) | |
parent | a6ccb1a72173cec6381d519a720dc08cfdc03720 (diff) | |
download | Qt-8fc05466a50bcf255900849d787790abd2bf6957.zip Qt-8fc05466a50bcf255900849d787790abd2bf6957.tar.gz Qt-8fc05466a50bcf255900849d787790abd2bf6957.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (21 commits)
Fix compilation of QMutableSetIterator::value() with QT_STRICT_ITERATORS
Fix the compilation error that the previous fix didn't fix
Use the thread-default glib context for the DBus connection in the ICD bearer manager.
Check that _POSIX_THREAD_SAFE_FUNCTIONS is larger than zero.
Use an increasing size for the getpwuid_r buffer.
Make sure we use at least 1024 bytes when calling getpwuid_r.
Fix compilation error: symbol is namespaced.
Don't crash when creating backtrace for built-in JS function (2nd try)
Revert "Improved performance of mapFromGlobal/mapToGlobal on X11"
QtDBus: do not wait for reply for AddMatch and RemoveMatch
Make qdbus show all types, even those that it doesn't know about
Doc: Fix the docs saying what the locale codec is used for
Autotest: simple improvements
Autotest: Use QElapsedTimer for timings
directfb: Pixmap creation always premultiplied the alpha even when it is already premultiplied in the image.
Don't crash when BMP color table is broken
Designer: Fix a crash in the Signal-Slot-Editor.
complain about unmatched quotes/parens
use const ref
move multiple inclusion check for feature files to correct location
...
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/image/qbmphandler.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qapplication_x11.cpp | 17 | ||||
-rw-r--r-- | src/gui/kernel/qwidget_x11.cpp | 28 |
3 files changed, 16 insertions, 31 deletions
diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp index 09c086a..6dea9d9 100644 --- a/src/gui/image/qbmphandler.cpp +++ b/src/gui/image/qbmphandler.cpp @@ -246,6 +246,8 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, int offset, int if (depth != 32) { ncols = bi.biClrUsed ? bi.biClrUsed : 1 << nbits; + if (ncols > 256) // sanity check - don't run out of mem if color table is broken + return false; image.setColorCount(ncols); } diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index f28868c..e0447cc 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -5656,10 +5656,21 @@ static void sm_performSaveYourself(QSessionManagerPrivate* smd) sm_setProperty(QString::fromLatin1(SmProgram), argument0); // tell the session manager about our user as well. struct passwd *entryPtr = 0; -#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) - QVarLengthArray<char, 1024> buf(sysconf(_SC_GETPW_R_SIZE_MAX)); +#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) && (_POSIX_THREAD_SAFE_FUNCTIONS - 0 > 0) + QVarLengthArray<char, 1024> buf(qMax<long>(sysconf(_SC_GETPW_R_SIZE_MAX), 1024L)); struct passwd entry; - getpwuid_r(geteuid(), &entry, buf.data(), buf.size(), &entryPtr); + while (getpwuid_r(geteuid(), &entry, buf.data(), buf.size(), &entryPtr) == ERANGE) { + if (buf.size() >= 32768) { + // too big already, fail + static char badusername[] = ""; + entryPtr = &entry; + entry.pw_name = badusername; + break; + } + + // retry with a bigger buffer + buf.resize(buf.size() * 2); + } #else entryPtr = getpwuid(geteuid()); #endif diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index 28eb3f0..b0375ef 100644 --- a/src/gui/kernel/qwidget_x11.cpp +++ b/src/gui/kernel/qwidget_x11.cpp @@ -1318,40 +1318,12 @@ QPoint QWidgetPrivate::mapFromGlobal(const QPoint &pos) const QPoint QWidget::mapToGlobal(const QPoint &pos) const { Q_D(const QWidget); - QPoint offset = data->crect.topLeft(); - const QWidget *w = this; - const QWidget *p = w->parentWidget(); - while (!w->isWindow() && p) { - w = p; - p = p->parentWidget(); - offset += w->data->crect.topLeft(); - } - - const QWidgetPrivate *wd = w->d_func(); - QTLWExtra *tlw = wd->topData(); - if (!tlw->embedded) - return pos + offset; - return d->mapToGlobal(pos); } QPoint QWidget::mapFromGlobal(const QPoint &pos) const { Q_D(const QWidget); - QPoint offset = data->crect.topLeft(); - const QWidget *w = this; - const QWidget *p = w->parentWidget(); - while (!w->isWindow() && p) { - w = p; - p = p->parentWidget(); - offset += w->data->crect.topLeft(); - } - - const QWidgetPrivate *wd = w->d_func(); - QTLWExtra *tlw = wd->topData(); - if (!tlw->embedded) - return pos - offset; - return d->mapFromGlobal(pos); } |