Commit Graph

26753 Commits

Author SHA1 Message Date
Romain Pokrzywka
650b4d0f49 Append the environment's QT_PLUGIN_PATH to 'make check' targets
Without this, any test executable requiring a plugin path from
the environment's QT_PLUGIN_PATH will fail to run since the path is
overwritten when generating the 'make check' command, for example:

QT_PLUGIN_PATH=/path/to/qt/plugins \
LD_LIBRARY_PATH=/path/to/qt/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \
./test_foo

A prepend config option is used for *PATH to preserve the envvar
value, so use the same option for QT_PLUGIN_PATH. The command above
then becomes:

QT_PLUGIN_PATH=/path/to/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} \
LD_LIBRARY_PATH=/path/to/qt/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \
./test_foo

Change-Id: I69b43327974915eae52f299fc4001effe93a491a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-12 15:21:39 +00:00
Oswald Buddenhagen
d8cfa6a144 disable install targets for non-prefix builds
one reason to do that is some users' persistence in destroying their
non-prefix builds by trying an installation.

another reason is the fact that qt.pro's relative_qt_rpath is triggered
by the presence of an install rule for the target, which is of course
not helpful when the install dir is bogus.

Task-number: QTBUG-48406
Change-Id: I75f3940be79fcb5b86e34b975b789692423c92cb
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-12 15:16:37 +00:00
Oswald Buddenhagen
20c7ab44c6 rework include path construction in the module system
the main objective was to fix the bootstrap modules in framework builds.
bootstrapped modules which "borrow" headers from "proper" modules can
specify this in a clean way now.
a side effect of this is that the bootstrap-dbus module now has its own
syncqt call.

most includepath-related setup from qt_module_pris.prf was moved to
qt_module_headers.prf.

Change-Id: Ie0d8192cfac1a8cdae0ddd0bc0cd8c3092b1e85b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-12 15:14:57 +00:00
Simon Hausmann
6b8c0a5058 Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I5839bded07e23af65ced9491c4f50242f964dd31
2016-01-12 11:07:56 +01:00
Edward Welbourne
6be65702f8 Minimal fix for network-manager problem on plugin unload.
This fixes the problem as long as we have C++ 11's semantics for
in-function statics.  The Q_GLOBAL_STATIC_WITH_ARGS() is a non-trivial
wrapper whose destructor gets unloaded with the plugin, leading to a
crash-on-exit if the global it wraps outlives the plugin.  The plain
(in-function) static manages to avoid this by avoiding the wrapper.
As the static was only needed in one place, this proves a sufficient
solution to the plugin-unload problem *in this case*.

Task-number: QTBUG-45891
Change-Id: I599fbee0b55ece4dceb4bf7202db374b507f5388
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 09:55:29 +00:00
Anton Kudryavtsev
5fecbfb2c8 Moc: fix duplicate condition in AND expression
Change-Id: I0c0e69aecdb7a15228d44688116a88b6afb44a50
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-12 09:52:43 +00:00
Edward Welbourne
81858bf172 Don't pretend we know what DST to use for an offset date.
When QDateTime::addDate() and friends sanitize their end-state, they
were using the DST status of their start-state (if known) to control
it.  This lead to misguided results and, in particular, inconsistent
results given that a raw-constructed QDateTime comes into being
ignorant of its DST, while a .toLocalTime() one knows its DST.

Furthermore, the code to do this was triplicated, tricky and poorly
explained.  So pull it out into a local static function and explain
what it's doing, and why, more clearly and only once.

Task-number: QTBUG-49008
Change-Id: Ia4bb3c5e9267fff8bb963ea705267998218ed623
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-12 09:23:55 +00:00
Alex Trotsenko
bb01a8c0a4 Add debug message on writing to an unbuffered TCP socket
The same message is already printed on UDP and buffered TCP.

Change-Id: I533baf97fe7e1359a38db3c3eb31d0463fe158e5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:39:08 +00:00
Alex Trotsenko
962a1fe892 QAbstractSocket::writeData(): remove dead code
The code was checking the write buffer in a branch for unbuffered sockets.

Change-Id: I4dc722e7f182562332c3d167e6ebbab7f53f51e7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:37:55 +00:00
Marc Mutz
13337c505d QTranslator: enable NRVO in find_translation() for poor compilers
... such as GCC.

truncate(0) was chosen because it is already used throughout
the function. Using clear(), say, which is inline, produces
slightly more code.

As is, saves 160b in text size on optimized GCC 4.9 Linux
AMD64 builds.

Change-Id: I415d09ad2b4547f1d69f78d85e2aa1c1f9a17ed3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-12 06:16:20 +00:00
Marc Mutz
066caebd8a QTranslator: optimize string handling in find_transformation
- Don't repeatedly truncate a (shared) QString, truncate a QStringRef
  instead, preventing a detach.

Change-Id: I1a9cf7fc5bc9ea06279f7e2548f2bd144b8780a3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-12 06:16:11 +00:00
Marc Mutz
6926e0d484 QtCore: eradicate all Q_FOREACH loops [kernel]
Saves just 168b in text size on optimized GCC 4.9 Linux
AMD64 builds, but most for loops are in non-Linux code.

Change-Id: I4f20a65c2e4953011308ff831c9e8fa37a25274b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:15:59 +00:00
Marc Mutz
6b9c4480bc Mark QLocale as shared
It was already movable, so it's BC. Only needed to add
nothrow member-swap and nothrow move assignment.

Change-Id: Iefedb877078da8ee075eb67185eef221143ddec1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:14:56 +00:00
Marc Mutz
c5e4417d6d QColor: fix misleading code in op==
For HSL colors, the (heavily over-parenthesized) code compared hslHue
values mod 36000, _and also_ for equality. Of course, the second
comparison is dead code.

This was a cut'n'paste error from the non-HSL comparison.

So, remove it. And also some of the over-parenthesization.

There are no tests for operator==, and the HSL color comparison is
completely opaque for me, so I'm not going to write any for this
trivial change.

Change-Id: I74572273730cb5cc9f427c524c268ba3f90304c1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-12 06:14:48 +00:00
Marc Mutz
0ea39eb842 QtDBus: eradicate all Q_FOREACH loops
Saves a bit more than 0.5KiB in text size on optimized
GCC 4.9 Linux AMD64 builds.

Change-Id: I3b7e4751c4799c3e2c9f8f23b769e1659d863579
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:14:43 +00:00
Marc Mutz
a7d631e44b QDBusConnectionPrivate::ObjectTreeNode: remove pointless empty dtor
It just prevents the compiler from synthesizing move
special member functions, something that is very much
desired, seeing as there's a QVector member.

Change-Id: I4daabb380cd73dcacf3f514827b84562767a7a20
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:14:38 +00:00
Marc Mutz
08775e4bd7 Revert "QString: preserve embedded NULs when converting from QByteArray"
This partially reverts commit e486d69133.
It broke too many users, even though all of them deserved to be broken.
The new functionality will be provided by differently-named functions,
where possible (problem: equality operators).

I did not revert the fix for the off-by-one error in
tst_qtextdocumentfragment.cpp.

I also didn't revert the change in the inequality relational operators,
since for all strings s1, s2 and s2' where s2' is s2 truncated at the
first NUL, s1 < s2 ⟺ s1 < s2' (since NUL < c for any c != 0), and,
trivially, for ≤, >, ≥, too. This does not hold for = and ≠, of course,
since "foo\0bar" ≠ "foo".

[ChangeLog][Important Behavior Changes][EDITORIAL] Reverted: All
conversions from QByteArray to QString now preserve embedded NULs...

Change-Id: If4b47048b39ae5be6ed08e6d91809626a67ea7f5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 06:13:05 +00:00
Marc Mutz
13189360e5 Fix UB in QFileDevice::writeData()
Passing nullptr as the 2nd argument of memcpy
constitutes undefined behavior.

Fix by protecting the block with 'if (len)',
which, presumably, is the only valid case
where 'data' may be nullptr.

Change-Id: I7647d7e0808b1f26444ea3cf8bbf5cda9ddc9e6c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-12 06:11:53 +00:00
Anton Kudryavtsev
66d94ea30b QProcessPrivate: fix double init of exitCode in ctor
Change-Id: I934cb9d40fa0c0c06e8552f522d58c5326754f37
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-12 05:17:17 +00:00
Anton Kudryavtsev
29ca117ad6 QSize: use qSwap in transpose()
... because that's what it does.

Change-Id: Ia3d4eefe2e675e4b2c2a4f01b8339ba69a40a5e9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-12 05:17:12 +00:00
Anton Kudryavtsev
f59b12c629 MakefileGenerator: use erase and std::remove_if with QVector
... instead of using erase in a loop, with quadratic complexity.

Change-Id: I4ac03ac0e893fc5dbb5e45131fcbfe82f1564bee
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-12 05:16:48 +00:00
Marc Mutz
b4ab4868bc Fix UB in QFSFileEnginePrivate::writeFdFh()
Apparently, it is considered valid to call the function with
'data' set to nullptr, and 'len' to zero. But doing so
invokes undefined behavior because nullptr is passed to
fwrite().

Fix by protecting the loops with 'if (len)'.

Found by UBSan:
  qtbase/src/corelib/io/qfsfileengine.cpp:732:84: runtime error: null pointer passed as argument 1, which is declared to never be null

Change-Id: Idfe23875c868ebb21d2164550de3304d2f01e9df
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 22:39:43 +00:00
Marc Mutz
5034d41630 QTranslator: don't repeatedly re-create a QString from a QLatin1String
... each time around the loops. Cache it.

Also use QStringLiteral, since the string will never be
modified.

Also saves 96b in text size on optimized GCC 4.9 Linux
AMD64 builds.

Change-Id: I0269586235da18f3073a553739561ea7db6356e8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-11 18:54:32 +00:00
Marc Mutz
c311815592 QTranslator: re-use 'realname' capacity in find_translation()
For almost the whole of its life time, 'realname' has the same
prefix, but the old code used the same string-builder expression
to construct it over and over again. If QStringBuilder would
re-use the capacity of the LHS object, that would boil down to
just a bit more copying of characters than necessary. But
assigning a QStringBuilder expression to a QString works by
implicit conversion of the QStringBuilder expression to a
QString, followed by move-assigning the new QString into the
old.

The new code keeps the common prefix around, resetting
'realname' to that prefix with truncate, only appending the
varying suffixes. In this way, one memory allocation per
assignment is saved (ignoring a potentially required capacity
increase in one of the appends here), and also some out-of-line
QString dtor calls, since op+=(QString&, QStringBuilder...)
doesn't create a temporary QString.

Also saves ~1KiB in text size on optimized GCC 4.9 Linux AMD64
builds.

Change-Id: I0872a69c9111d7218567f06f8fefb010f2430532
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 18:37:53 +00:00
Richard Moe Gustavsen
ca7f1d2197 iOS: fix crash on iOS 8 due to unsupported selector
It turns out that f558bde was not enough to stop a crash when
trying to access forceTouchCapability of traitCollection. The
reason is that traitCollection is available on UIScreen starting
from iOS 8, while forceTouchCapability is available on
UITraitCollection starting from iOS 9. So only checking the former
will cause a crash when running on iOS 8.

Change-Id: I44f9fb785349694004fbf2f48fe3b85bb01d9a5a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-11 18:30:42 +00:00
Marc Mutz
71ea41f999 Fix UB in QVariant::canConvert()
'currentType' was not sanitized before being used as a shift.

Fix by checking for a valid shift amount before shifting.
Also change the shifted value from 1 (int) to 1U (uint).
It's just the right thing to do.

Found by UBSan:
    qtbase/src/corelib/kernel/qvariant.cpp:3131:59: runtime error: shift exponent 1114 is too large for 32-bit type 'unsigned int'

Change-Id: Id3910d6d7f166fd7c80adf5ce1699f0eeb453562
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 18:16:31 +00:00
David Faure
e8479592c5 Doc: mention that Qt::AA_X11InitThreads isn't used anymore
Whether or not to call XInitThreads() doesn't apply since Qt-5.0's switch to XCB.

Change-Id: I5f1e5e664a251c98af6357c87fc9a6bb03a46ce3
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-01-11 17:28:52 +00:00
David Faure
9002f7f47a Fix documentation for ReuseAddressHint on Unix.
The code says (for Q_OS_UNIX)
if ((mode & QAbstractSocket::ShareAddress) || (mode & QAbstractSocket::ReuseAddressHint))
    socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1);
so clearly ReuseAddressHint does the same as ShareAddress, which is: setting SO_REUSEADDR.

Change-Id: Ic2ab4d139c3f58c3c63723fc609a9d4f71bac97a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 17:28:43 +00:00
Anton Kudryavtsev
2a2c582306 QListView: use erase and std::remove_if with QVector
... instead of using erase in a loop, with quadratic complexity.

Change-Id: I9686d117e092f5d74c6e74a462adf503a7b7ae79
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-11 11:40:38 +00:00
Maurice Kalinowski
0355345398 winrt: Flush the system event queue when adding/removing windows
This has only been identified by WACK for Windows 10.

QWinRTWindow::setVisible adds a Window to the screen and immediately
tries to set the native visibility. This only works when the system
events are handled immediately. While this is the case most of the time,
certification tests revealed that this is not always the case. We have
to flush before setting the element visibility.

Change-Id: Ifce4c045c185c57bc386a4e832074fb84f5d0053
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-11 10:06:46 +00:00
Maurice Kalinowski
14e43c8f42 winrt: Fix API usage certification
According to MSDN Tls* is inline replaced by Fls* on Windows (Phone) 8.1
and beyond.
However, this does not seem to be the case for Windows 10. An
application links against Tls* and the certification step fails due to
using non-allowed APIs.

Hence we do the inline replacement manually. QThreadStorage and QThread
tests continue to work, so it seems to be an oversight by Microsoft.

Task-number: QTBUG-50292
Change-Id: Ice1b6e54fcee238c94af5c6fb1753d903db7476d
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-11 10:06:40 +00:00
Maurice Kalinowski
becbffe291 winphone: Properly close the application
When shutting down an application on Windows Phone the SceneGraph tries
to create an offscreen surface to render into. If there is no offscreen
surface available, it creates a new native window and tries to hide it.
As the native event loop is about to shut down, creation fails and
exceptions are raised. Instead we create a vanilla
QPlatformOffscreenSurface. The SceneGraph recognizes it as such and can
handle a proper cleanup on its own.

Furthermore removing the suspend/resume handler in the destructor of
QWinRTIntegration fails for Windows Phone as the application object
itself does not accept this anymore. Hence skip this part for this
platform.

Task-number: QTBUG-49310
Change-Id: I02acdd5a635ef0b9d6ef8199376537b8f0f1a8fb
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-11 10:06:36 +00:00
Maurice Kalinowski
c4ecab7127 WinRT: Invoke correct remove handler
Probably a typo when moving to Xaml.

Change-Id: I0739f4561912e1e16df7b124d6d187cd0f60f657
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-11 10:06:31 +00:00
Maurice Kalinowski
2b1f01426c WinRT: Fix application shutdown
Do not create a dummy eglDisplay when the global static is constructed.
This causes ANGLE to wrongly set some internals, which breaks usage of
EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE as the attribute map
might be empty after calling eglGetPlatformDisplayEXT. Furthermore
initialize() assigns a new display to it without terminating the old
one. This way, the internal suspend handler in ANGLE (Trim11.cpp) will
be added to the application.

The suspend handler is not invoked when an application suspends though.
Reason being that the handler needs to be added from inside the Xaml
thread. As we cannot control this inside ANGLE, we will call
eglInitialize inside the Xaml thread and hence get the suspend event
properly.

Task-number: QTBUG-50337
Task-number: QTBUG-50292
Change-Id: I3867377254c37084bf24f18e78af467f6237db57
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-11 10:06:26 +00:00
Kevin Funk
558f69a18b CMake: Ensure that -fPIC is passed in tests.
CMake newer than 2.8.12 automatically adds the
appropriate flag, but CI still runs 2.8.11.

Change-Id: Ie61375f2feb54a92c9d8f0ed6ad5227a67343bc5
Reviewed-by: Stephen Kelly <ske@ableton.com>
2016-01-11 09:53:37 +00:00
Kevin Funk
1c32b71cd0 CMake: Fix qt5_use_modules macro for CMake 2.8.11
Note the excessive escaping around "GNU".
Otherwise this leaks the -fPIE flag to the target.

Change-Id: I340df5d5bce00ebec4e1ff3a557ade67022ba23b
Reviewed-by: Stephen Kelly <ske@ableton.com>
2016-01-11 09:53:32 +00:00
Dāvis Mosāns
c8af3160d2 Don't pass NULL Display to glXGetClientString
glXGetCurrentDisplay can return NULL so need to check
for that.

Change-Id: I1b85a5c575d1deb24dcce4719b6f737283adeabe
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-01-11 09:40:40 +00:00
Anton Kudryavtsev
2ccacfb5c9 QSyntaxHighlighterPrivate: use erase and std::remove_if with QVector
... instead of using erase in a loop, with quadratic complexity.

Change-Id: If30c6c99a775aec07eef9ddf953e944dc916b5a2
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-11 09:33:40 +00:00
Friedemann Kleint
f186c4a819 Diaglib: Fix and extend dumping of native windows (Windows).
When recursing over the windows, the code did not take into account
that EnumChildWindow enumerates grand children as well. Exclude
those by checking for the direct parent in the recursion so that
the hierarchy is printed correctly. Add more information about
class and module and rearrange the output a bit so that the window
title is more prominent.

Task-number: QTBUG-50206
Change-Id: Iffb12c44eda9d09da5eb14a8405aee52ed3aa849
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-11 07:56:17 +00:00
Edward Welbourne
89293e6b19 Make DST-transition test more general.
Widen its interval (to work in more TZs) and test spring as well as
autumn.  Anywhere that does have a DST transition probably has it
between August and December; and there's no benefit to using a narrow
window.

There's also no sense skipping the test if we don't know there's a DST
transition: the test should still work, it just won't be testing
anything (about DST transitions).

Combine date and time checks into date-time checks, so that, when one
of them fails, QCOMPARE lets us know how the other changed, too.

Task-number: QTBUG-49008
Change-Id: I145b939ffef0dd0b54fd0e3cdf72a159c57ec00b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 07:31:19 +00:00
Thiago Macieira
ac2bde9caf QVariant: make sure two floating points compare equal if they are equal
Not just fuzzily equal. The fuzzy comparison fails for infinities, since
the expression p1 - p2 where p1 = p2 = infinity is NaN. And NaN
comparisons are always false.

As a nice side-effect, we don't do the more expensive computation of a
multiplication if the two numbers really are equal.

Task-number: QTBUG-50036
Change-Id: I11f559ef75544c50b3f8ffff1420cec7c7273295
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-11 05:20:23 +00:00
Thiago Macieira
29f41e5e38 Change the ELF linker version script creator to take no parameters
It only needs stdin now, instead of stdin plus a separate file containing
a list of file names.

Change-Id: I9f3db030001e47e4a4e5ffff1425b76884cc7ca0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-11 05:20:20 +00:00
Thiago Macieira
15b65e7a5f Revert "dbus: Print out 'serial' and 'serial reply to' with DBusMessage operator<<."
This reverts commit d3fe4f066f.
Required to revert the parent commit.

Change-Id: I1039e2ee65c0cd2c3209ea18bd3bd2d84a8daef3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 05:20:18 +00:00
Thiago Macieira
71c0bb3fd1 Revert "dbus: Add method serial() and replySerial() to class DBusMessage."
This reverts commit 618e2cc081. The
original commit has a section of code that I failed to review properly
and is of questionable functionality.

Change-Id: I61c53d7b8b2aa7c3312292b017a18aba7da11bc5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-11 05:19:41 +00:00
Sérgio Martins
1bbf7fb4e3 Fix a few container detachments
Change-Id: I018a1fe4bdbbe42b683793d7ddbf19f464d6e3b0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-10 12:49:00 +00:00
Kevin Funk
000c4358ce CMake: Make all tests link to Qt libraries
This is needed as of commit v5.6.0-beta1~483 (Add an automatic use of
the ELF-versioned QtCore symbol, 2015-10-20).  Even if a translation
unit only contains

 #include <QtCore/QString>

 int main(int,char**)
 {
     return 0;
 }

it must link to QtCore which provides the qt_version_tag symbol.

Change-Id: I827c0a7403320e7e5b384d8608face20fcecdaea
Reviewed-by: Stephen Kelly <ske@ableton.com>
2016-01-09 15:35:20 +00:00
Anton Kudryavtsev
b4c11c7cc5 QComposeInputContext: reduce composeBuffer to QT_KEYSEQUENCE_MAX_LEN
The extra length has been used for a sentinel null value.
By checking the index before indexing into the array, that
extra element can be dropped.

Change-Id: I0b309420d8d89f75e2381a8065c8e68a1a33427c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-09 15:20:20 +00:00
Marc Mutz
1e2b42523f Fix UB in tst_QObject::disconnectDoesNotLeakFunctor()
If CountedStruct is passed a GetSenderObject object,
it will attempt to call a member on it from within
its own destructor.

That works usually quite well, but in this test case,
which tests for function object leaks when a connection
is torn down because the sender object is destroyed,
the destruction of the CountedStruct happens when all
connections are severed in ~QObject. At that point,
what used to be a GetSenderObject instance no longer
is one and the call into one of its member functions
invokes undefined behavior.

Fix by making QObject::sender() public by a using
declaration instead of a wrapper function.

Found by UBSan:
  tests/auto/corelib/kernel/qobject/tst_qobject.cpp:6007:104: runtime error: member call on address 0x7ffc6e7538b0 which does not point to an object of type 'GetSenderObject'
  0x7ffc6e7538b0: note: object is of type 'QObject'

Change-Id: Ia973140037b3c1b5a670a8a3949d09b956f40349
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-09 15:18:50 +00:00
Thiago Macieira
49c743bdb9 QDate: fix calculation of the week number for the last days of 2020
Off-by-one error: we should have calculated whether the current year is
leap, not the next year. This affected any 53-week leap years.

Task-number: QTBUG-50273
Change-Id: I134ce5db2f82468585ffffff14264cb9f12998fd
Reviewed-by: Martin Klapetek <mklapetek@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-09 09:13:44 +00:00
Anton Kudryavtsev
03dcc5c036 QXcbConnection: use erase and std::remove_if with QVector
... instead of using erase in a loop, with quadratic complexity.

Change-Id: Ia5201e0bedca7abec6d485505f61f3f76a028bd1
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-09 09:06:01 +00:00