vcl/qt5/QtTransferable.cxx | 3 +++
1 file changed, 3 insertions(+)
New commits:
commit 8d98f231fa2d3f4386a842d0f45a9ceeea4ab8e1
Author: Michael Weghorn <[email protected]>
AuthorDate: Thu Feb 15 08:52:25 2024 +0100
Commit: Michael Weghorn <[email protected]>
CommitDate: Fri Feb 16 09:09:28 2024 +0100
tdf#156562 qt: Don't crash on null clipboard content
Since
commit 1db5b87fe69c2375f1d66974dafcd563303c76db
Author: Michael Weghorn <[email protected]>
Date: Tue Feb 13 13:23:17 2024 +0100
tdf#156562 qt: Sync with system clipboard content if necessary
, mime data are updated from the system clipboard when there's
a mismatch.
Quoting Stephan Bergmann's [1]:
> PS2, Line 174: setMimeData(pCurrentClipboardData);
> At least for my Qt6-based Emscripten build, `pCurrentClipboardData`
> can be null here, so setting `QtTransferable::m_pMimeData` to null here,
> and a later call to `QtTransferable::getTransferDataFlavors` will
> call `m_pMimeData->formats()` and crash.
Add a corresponding null check.
From what I can see, other methods shouldn't need an explicit check,
as they use the result of `QtTransferable::getTransferData`
(e.g. `QtTransferable::getTransferData` returns early if
`QtTransferable::isDataFlavorSupported` returns false, which in
turn calls `QtTransferable::getTransferData` that now has this
null check).
[1] https://gerrit.libreoffice.org/c/core/+/163304/comment/8872708d_1abdef81
Change-Id: Ibec756c2b073b1e19a3b4761e57c35576b44adc3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163423
Reviewed-by: Stephan Bergmann <[email protected]>
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <[email protected]>
diff --git a/vcl/qt5/QtTransferable.cxx b/vcl/qt5/QtTransferable.cxx
index 41c2c58392ef..18c2583e2e63 100644
--- a/vcl/qt5/QtTransferable.cxx
+++ b/vcl/qt5/QtTransferable.cxx
@@ -50,6 +50,9 @@ QtTransferable::QtTransferable(const QMimeData* pMimeData)
css::uno::Sequence<css::datatransfer::DataFlavor> SAL_CALL
QtTransferable::getTransferDataFlavors()
{
+ if (!m_pMimeData)
+ return css::uno::Sequence<css::datatransfer::DataFlavor>();
+
QStringList aFormatList(m_pMimeData->formats());
// we might add the UTF-16 mime text variant later
const int nMimeTypeSeqSize = aFormatList.size() + 1;