Commit Graph

28294 Commits

Author SHA1 Message Date
Gabriel de Dietrich
2422c1a227 Cocoa: Enable skipping Ctrl+LMB to RMB override
This can be enabled with QT_MAC_DONT_OVERRIDE_CTRL_LMB=1
environment variable. The goal is to provide consistent
cross-platform input when it's more desirable than full
platform comformance.

Change-Id: I3b96733077bd1c0367edeef21a98a44b15425807
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-03 20:20:04 +00:00
Laszlo Agocs
324e277687 Fix plugin name for eglfs' GBM backend
In 5.7 the Gbm prefix was added but the .pro file was not updated.
This breaks static builds.

Task-number: QTBUG-53136
Change-Id: I37af46ff768bf8c1dc9269892db25d61b76c0376
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-03 19:38:15 +00:00
Thiago Macieira
494376f980 Stop unloading plugins in QPluginLoader and QFactoryLoader
QPluginLoader hasn't unloaded in its destructor since Qt 5.0, but we
missed the equivalent code in QFactoryLoader (which bypasses
QPluginLoader). Besides, QPluginLoader::unload() was still doing
unloading, which it won't anymore.

Not unloading plugins is Qt's policy, as decided during the 5.0
development process and reaffirmed now in 5.6. This is due to static
data in plugins leaking out and remaining in use past the unloading of
the plugin, causing crashes.

This does not affect QLibrary and QLibrary::unload(). Those are meant
for non-Qt loadable modules, so unloading them may be safe.

Task-number: QTBUG-49061
Discussed-on: http://lists.qt-project.org/pipermail/development/2015-November/023681.html
Change-Id: I461e9fc7199748faa187ffff1416070f138df8db
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-03 17:54:22 +00:00
Friedemann Kleint
69c2a606b3 Merge "Merge remote-tracking branch 'origin/5.7' into dev" into refs/staging/dev 2016-05-03 18:58:24 +00:00
Tor Arne Vestbø
224db5e6eb darwin: Move conversion function documentation to function definition
It's easier to maintain the function and the docs when they live together.

Change-Id: I1e047b4ac1eb61a36849188da560dd899e05509f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-05-03 15:20:30 +00:00
Tor Arne Vestbø
597df79c27 darwin: Simplify conversion function declarations in headers
We don't need to include Q_QDOC in the forward-declarations of the native
types, and Q_FORWARD_DECLARE_OBJC_CLASS works in non-Objective-C mode as
well, which means we can declare the Objective-C versions of the functions
without guards.

Change-Id: I32089c496b4f7ce47f0388ba3f65e0b091d1e9ee
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-05-03 15:20:24 +00:00
Laszlo Agocs
ecf127505e egl: Reshuffle headers to help less fortunate systems with X11
EGL headers including X headers has traditionally been problematic due
to getting macros for Status, None, etc.

In most cases this is not an issue anymore because on embedded one will
almost always use a driver targeting the framebuffer or DRM/KMS and
therefore the EGL headers do not pull in X dependencies.

Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding
the problem altogether with Mesa regardless of targeting X11 or KMS.

However, other drivers do not have this option. On i.MX6 for instance,
targeting X11 is problematic due to not having EGL_API_FB defined, which
in turn means the EGL headers pulls in X headers in order to be able to
define the native display and window types as Display and Window.

Try to play nice with this use case by reshuffling the includes and
undefining the problematic names.

Task-number: QTBUG-52928
Change-Id: I059f26b340b6e442e7296055915d18f5a1ce7a7f
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-03 14:38:14 +00:00
Edward Welbourne
e6b1e918e1 QLinuxFbScreen: fix uninitialized member warnings
Prompted by Coverity CID 11720 (allegedly recently new in dev but
long-standing in 5.6).  Even assuming the class is used correctly -
test initialize() and only use if that succeeded - the destructor
would have passed uninitialized arguments to munmap() and ioctl().

Noticed a double close along the way: it's been fixed on dev but
should have been fixed in 5.6, too.  Documented why ioctl() failure in
switchToGraphicsMode() should at least do no harm.

Change-Id: Ie26a9eefa435b5ff5b1a02e03e29469b8db72d3c
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-03 15:29:56 +00:00
Liang Qi
6357813207 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	configure
	src/3rdparty/double-conversion/include/double-conversion/utils.h
	src/corelib/global/qnamespace.qdoc
	src/corelib/tools/qsimd_p.h
	tests/auto/corelib/io/qfile/tst_qfile.cpp

Change-Id: I3ca1007bab5355d251c13002a18e93d81c254d34
2016-05-03 15:49:15 +02:00
Jesus Fernandez
73df18e161 Added a missing comma to the comment.
Change-Id: Ia32c9b298dc35ccdd95d92550c06cff52f918ea1
Reviewed-by: Nico Vertriest <nico.vertriest@theqtcompany.com>
2016-05-03 12:30:56 +00:00
Mitch Curtis
155533e059 Fix grammar in QSKIP documentation
Change-Id: Ia57dd2c859ae5b025515c45593a7f89a1b7f28ff
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-05-03 10:46:35 +00:00
Oswald Buddenhagen
780d21e129 fix example installs
Change-Id: Ib34795f10b1d7120b28958127ced049af3b4f72b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-03 10:25:33 +00:00
Oswald Buddenhagen
1ae1f0da0d delete unreferenced file
Change-Id: Ibc70cafdc098ff4f6036182d6f41a2debb15a996
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-03 10:25:30 +00:00
Oswald Buddenhagen
2c7b3726bf install the opengl legacy examples
while they are not built, their sources should be installed as long we
don't delete them completely.

Change-Id: I5e628e96cc9715520cb6e5aadb2cae61d1d03a4f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-03 10:25:25 +00:00
Oswald Buddenhagen
619ab8080d fix build and installation of queuedcustomtype example
it was not built at all (and didn't build with qt in a namespace), and
consequently was not installed as well.

Change-Id: I24d8ac4dd5d70927c262ad6336e5ee32a0fd003a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-03 10:25:22 +00:00
Oswald Buddenhagen
5bbbea4c83 normalize structure of plugandpaint example
as in other examples which come with plugins, use an additional
hierarchy level which contains the app and plugin subdirs.

Change-Id: I2487755967aa3474c337c8c8af10be49627b63d0
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-05-03 10:25:18 +00:00
Oswald Buddenhagen
e34ebe6328 automate the installation of some more example source files
Change-Id: I61f9f4882c5a7743817059824250958f5ce4a603
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-03 10:25:14 +00:00
Erik Verbruggen
2410be7f45 Tune fast-exit for signal activation for QML.
When using QML, it quite often happens that only the QML engine is
connected to a signal, and no C++ handlers. By splitting up the
fast-exit case and handling QML separately, we can prevent a call to
QThread::currentThreadId, and locking+unlocking the mutex.

On x86 this saves ~130 instructions according to valgrind.

Change-Id: I947fe42afe351922339ac982a6d498bc2f7b5192
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-03 08:53:53 +00:00
Timur Pocheptsov
6efa3215a2 QOpenGLCustomShaderStage - fix a memory leak
Coverity found a memory leak - CID-10995. Fix a dtor + make copy constructor
/ assignment operator private (Q_DISABLE_COPY).

Change-Id: I4f046d075b60fbfb69f350e4a4d8b07ea1643914
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-03 06:58:44 +00:00
Marc Mutz
5a76a3fb03 QtBase: use printf-style qWarning/qDebug where possible (II)
The printf-style version of QDebug expands to a lot less code than the
std::ostream-style version. Of course, you pay in type safety (but
compilers warn about it these days), you cannot stream complex Qt
types and streaming QStrings is awkward, but in many cases you
actually improve on readability.

But the main reason is that something that's not supposed to be
executed under normal operation has no business bloating executable
code size.

This is not an attempt at converting all qWarnings() to printf-style,
only the low-hanging fruit.

In this second part, replace
   qWarning() << "" << non-QString
with
   qWarning("..%.", non-QString).

QString (and QUrl etc) have special escaping handling when streamed
into QDebug, so leave those alone. They also seem to expand to less
code than the qPrintable() alternative, so there's no reason to
replace them.

Saves 2KiB, 3.4KiB, ~750b and ~450b in text size in QtCore, Gui,
Network and Widgets, resp., on optimized GCC 5.3 AMD64 builds.

Change-Id: Iae6823e543544347e628ca1060d6d51e3b04d3f4
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-05-03 04:35:06 +00:00
James McDonnell
cb320925b9 Change some QNX defaults
Make REDUCE_EXPORTS the default for QNX.  This is what the Linux builds
use.  The Windows builds should too.

Turn on ICU detection for QNX.  QNX has ICU.

Task-number: QTBUG-52578
Change-Id: Ie65c6ff03c4eecf361727b3b6026338f686d9749
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-05-03 04:29:54 +00:00
André Klitzing
0eaac0a3a9 Add support for PSK on server side
[ChangeLog][QtNetwork][QSslSocket] TLS PSK ciphers are possible in server sockets.

Task-number: QTBUG-39077
Change-Id: Iaa854a6f50242deae5492f2e4759c727488995f5
Reviewed-by: Richard J. Moore <rich@kde.org>
2016-05-02 20:33:00 +00:00
Thiago Macieira
fecaa6aae8 Workaround Windows DLL unload issue with threads running
We don't know why it happens, so let's apply a workaround. See the
comment for more details.

Task-number: QTBUG-53031
Change-Id: Ifea6e497f11a461db432ffff144972e892fbbda5
Reviewed-by: Roland Winklmeier <Roland.M.Winklmeier@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-02 20:24:24 +00:00
Friedemann Kleint
22a7edd816 tst_QTcpSocket, tst_QUdpSocket: Improve diagnostics.
Add more error messages on failures.

Task-number: QTBUG-25367
Task-number: QTBUG-25368
Change-Id: I064143a058b7b98d9d5eecab8b5da49f5307e1eb
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2016-05-02 19:20:33 +00:00
Oswald Buddenhagen
8f0bf2d3d2 support directories in COPIES
this makes it fully consistent with INSTALLS.

note that this also removes the file name from the target path when
copying files, also for consistency.

Change-Id: I69042c9aa1e2cc81f8ff982343ba25688a04abfd
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-02 18:35:02 +00:00
Oswald Buddenhagen
49f92f9ab7 add some missing filename expandos to extra compilers
- QMAKE_FILE_IN_EXT as an alias for QMAKE_FILE_EXT, for consistency with
  QMAKE_FILE_IN_BASE
- QMAKE_FILE_IN_NAME to make pairing _EXT/_BASE to get a full name
  unnecessary (finally ...), and make use of it
- QMAKE_FILE_OUT_PATH, because i'll need it

Change-Id: I3d91ddb84f9cce52a665d562da11d165c92550c8
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-02 18:34:59 +00:00
Oswald Buddenhagen
ce044ce348 ensure that QMAKE_FILE_{IN,OUT}_BASE are quoted
it's beyond me why they shouldn't be.

Change-Id: I2493469636e4f196bfeb2eb00a691aeae0f1881d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-02 18:34:55 +00:00
Oswald Buddenhagen
be6a92ec09 remove redundant OTHER_FILES assignments
newer versions of qt creator understand QMAKE_EXTRA_COMPILERS and
INSTALLS, so there is no need to list the files twice.

Change-Id: Iccf3cc3248daf3422b8c366c2eb2d2f46c5f08d1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-02 18:34:47 +00:00
Alex Trotsenko
9af2cccc59 QNativeSocketEngine: fix build in debug mode under Windows
Change-Id: Id9b42f3d40b82ae6a8d581b0fbf6fd0b2ae589aa
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-02 17:27:14 +00:00
Tor Arne Vestbø
8badbd5040 iOS: Report correct physicalSize and physicalDotsPerInch for iPhone6+
On iPhone 6(s) Plus devices, or when display zoom is enabled in an iPhone 6,
the render buffer is scaled before being output on the physical display.
We have to take this into account when computing the physical size.

Task-number: QTBUG-50941
Change-Id: I318f3a866d039fccf0ba08f381fc9d8bcd676acd
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2016-05-02 17:27:06 +00:00
Allan Sandfeld Jensen
63169fc893 Fix underline position on Liberation Mono
Ensure we don't round a underline position beyond the descent in our
eagerness to avoid underlines too close to baseline.

Task-number: QTCREATORBUG-15851
Change-Id: I9a29447bbcb938b7e9fb29d52fd392a1340d07c5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-05-02 16:25:35 +00:00
Timur Pocheptsov
9f416fad36 qsslsocket/context_openssl - ALPN and NPN, not ALPN or NPN
ALPN and NPN should not be mutually exclusive, it's possible that our
peer does not support ALPN but does support a protocol we can negotiate
via NPN. So use them both.

Change-Id: Ib3c8066d89117efab55ac8435cc2c806c7a1ece0
Reviewed-by: Richard J. Moore <rich@kde.org>
2016-05-02 15:37:38 +00:00
Oliver Wolff
16f3c6e4a1 Fix MinGW 5.3.0 build of ANGLE
D3D11_QUERY_DATA_SO_STATISTICS is no part of d3d11sdklayers.h and thus
not covered by the ANGLE_MINGW32_COMPAT define. The struct is defined
in d3d11.h and will be available in an upcoming version of MinGW (see
a0cd5afeb6/
).

As soon as the MinGW version that includes the change is known, the
__MINGW32__ check should be replaced by a proper version check.

Change-Id: I774f24432b375fdf9c559449f266cc04a4905275
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-05-02 13:15:47 +00:00
John Preston
1c456751b3 Fix QFile::copy() on WinRT.
Implementation of QFileSystemEngine::copyFile() uses CopyFile2() as if
it is CopyFile() function, but CopyFile2() returns HRESULT, not BOOL.
So the success should be checked by "SUCCEEDED()" instead of "!= 0".
Current implementation does exactly the opposite because S_OK == 0.

Change-Id: I0677d54447d22366fb2031e0b928a3d10e24c0ed
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-05-02 12:18:36 +00:00
Giuseppe D'Angelo
ea97a43175 QOpenGLContext: add a way to disable the thread affinity check
The problem of the check is that it makes Qt non compliant with OpenGL
thread affinity semantics. One is allowed to make a GL context
current on any thread, without the Qt-specific idea of moving
the QOpenGLContext to that thread first. Moreover, the move is
plain impossible if the user needs to handle the context
to 3rd party code which assumes the context to have GL semantics.

Add an application flag to disable that.

Change-Id: I55ca02ee62f8cc171a9a1bddef5331ad0949c061
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-02 11:52:00 +00:00
Jan Arve Saether
9c02a924ca Add Qt::ImInputItemClipRectangle support to widgets
Let widgets respond to ImInputItemClipRectangle inputMethodQuery and
notify about potential changes with QInputMethod::update()

Change-Id: I01b2c53273df207d26107b237a7096fe53d1b0a5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2016-05-02 11:00:47 +00:00
Jan Arve Saether
9180797247 Add QInputMethod::inputItemClipRectangle()
This property allows a convenient way of getting notified about changes in
the input item clipped rectangle, similar to QIM::cursorRectangle().

Change-Id: I26bf97eeb1f5ef1b7d3aafb03565023091d6df3d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2016-05-02 11:00:41 +00:00
Jan Arve Saether
eb63c0fa47 Add ImInputItemClipRectangle
This rectangle represents the "effective" visual rectangle of the input
item, excluding any areas obscured due to clipping.

Note: The effective visual rectangle will not be influenced by overlapping
items.

Change-Id: I234176161dcfb9c236124e33ae510a0b01fe6dc3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2016-05-02 10:56:45 +00:00
Friedemann Kleint
c09008d27c QWindowsPipeWriter: Fix developer build with MinGW.
Fix signedness in comparion:
io\qwindowspipewriter.cpp: In member function 'void QWindowsPipeWriter::notified(DWORD, DWORD)':
io\qwindowspipewriter.cpp:134:65: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     Q_ASSERT(errorCode != ERROR_SUCCESS || numberOfBytesWritten == buffer.size());

Amends change a4d26cf522.

Task-number: QTBUG-52401
Change-Id: If0c0e2107342408675fa00b93f28c9de339080f6
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-02 10:55:03 +00:00
Urs Fleisch
c6d041e7ca xcb: Fix drag and drop to Emacs.
Unfortunately, the improved patch for QTBUG-45812 fixed things for
Chromium, but did no longer work for Emacs. This fixes commit [269fdb]
to make it work for both Emacs and Chromium.

Task-number: QTBUG-45812
Change-Id: I2fca708503f27679681bc6959de1ad94943a063e
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-05-02 08:03:54 +00:00
Friedemann Kleint
f40dbe0d0b QtWidgets: Introduce delegating constructors.
Reduce code duplication by chaining constructors.

Change-Id: I0229556a417153063ac6d14d35765c85e6fe1fe8
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-02 07:56:25 +00:00
Liang Qi
4679861105 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-05-02 07:03:53 +00:00
Lars Knoll
799be4e489 Move the help text for configure into its own file
Change-Id: If9c86c5bf9c6194f1ac282a657f9967f4fa589b3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-05-01 10:28:45 +00:00
Marc Mutz
54d95d0988 Fix UB (data race) in Q_GLOBAL_STATIC
The store to guard in the inner function's critical
section was not synchronized-with the load at the
start of the function:

    T1                    T2
    guard.load()
    mutex.lock()
    guard.load()
    d = new Type
    guard.store()
                          guard.load()
                          // use d
    mutex.unlock()

The use of d in T2 does not synchronize with
the write to d in T1 -> data race -> UB.

Fix by storing with release memory ordering,
so that the guard.load() in T2 synchronizes
with the guard.store() in T1.

Change-Id: I5c1cd1fa097c6397cb0b48b0d8e8012f95978558
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-01 07:25:25 +00:00
Andy Nichols
c7b6e13450 Add QPlatformBackingStore::toImage() implementations
On platforms where it makes sense, add the implementation that makes
returning a QImage possible.  This makes it possible to grab raster
windows.

Change-Id: I89241728aa6f7811c56bb66cd86a64aa961d71f8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-30 20:20:31 +00:00
Andy Nichols
3650cbc323 Enable QPlatformBackingStore::toImage() when QT_NO_OPENGL is defined
There are cases where you would want to grab the contents of a QWidget
with a QSurfaceType of Raster, and in the case of a -no-opengl build
there is no way to get the contents of a QBackingStore.  The toImage()
function was unnecessarily lumped into the QT_NO_OPENGL ifdef, so this
commit removes this truncation of the API.

Change-Id: I2644e3dc85339eecd8bae8b91f23ef2f29a7eee4
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-30 20:20:27 +00:00
Anton Kudryavtsev
6cbcff4971 QDateTime: use default ctor to create invalid object
Don't perform some internal init functions.

Change-Id: I9986e7a8adab35499aea804d1019012547aefd5d
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-04-30 18:26:09 +00:00
Anton Kudryavtsev
ac7d14f1aa QDateTimeParser: enable RVO in format()
Change-Id: I3d9f84d03519b2b8fb37c7d2e773e68bc4b9a1d3
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-04-30 18:25:57 +00:00
Thiago Macieira
0d0141d746 Don't bother asking if Linux supports a monotonic clock: it does
Change-Id: Id5480807d25e49e78b79ffff144a0e61bd001dff
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-30 18:24:15 +00:00
Alex Trotsenko
a4d26cf522 QWindowsPipeWriter: ensure validity of the write buffer
QWindowsPipeWriter uses asynchronous API to perform writing. Once a cycle
has been started, the write buffer must remain valid until the write
operation is completed.

To avoid data corruption and possibly undefined behavior, this patch
makes QWindowsPipeWriter::write() take a QByteArray, which it keeps alive
for the duration of the write cycle.

Autotest-by: Thomas Hartmann
Task-number: QTBUG-52401
Change-Id: Ia35faee735c4e684267daa1f6bd689512b670cd2
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-04-30 13:13:26 +00:00