diff options
author | Aleix Pol <aleixpol@kde.org> | 2020-01-20 19:05:46 +0100 |
---|---|---|
committer | Aleix Pol <aleixpol@kde.org> | 2020-02-14 13:47:54 +0100 |
commit | cfc4043626e05649e51607a92ceb87d31e0d1b06 (patch) | |
tree | 18a3994f3aaa514c47b51ffbeedec4cd5687b2ae | |
parent | e21230a3b8b4aca50121c373a6ffea770807d4a0 (diff) | |
download | qtwayland-cfc4043626e05649e51607a92ceb87d31e0d1b06.tar.gz |
Make generated files more resilient to crashesv5.15.0-beta1
If m_resource is not initialized when calling a send_* method it will
simply crash. This change checks for it beforehand so we get a warning
instead.
Change-Id: I601f9070a35a1b3e595567991f7e54e9a6572c2d
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
-rw-r--r-- | src/qtwaylandscanner/qtwaylandscanner.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/qtwaylandscanner/qtwaylandscanner.cpp b/src/qtwaylandscanner/qtwaylandscanner.cpp index 05f00bee..3cecb5bc 100644 --- a/src/qtwaylandscanner/qtwaylandscanner.cpp +++ b/src/qtwaylandscanner/qtwaylandscanner.cpp @@ -906,6 +906,11 @@ bool Scanner::process() printEvent(e); printf("\n"); printf(" {\n"); + printf(" Q_ASSERT_X(m_resource, \"%s::%s\", \"Uninitialised resource\");\n", interfaceName, e.name.constData()); + printf(" if (Q_UNLIKELY(!m_resource)) {\n"); + printf(" qWarning(\"could not call %s::%s as it's not initialised\");\n", interfaceName, e.name.constData()); + printf(" return;\n"); + printf(" }\n"); printf(" send_%s(\n", e.name.constData()); printf(" m_resource->handle"); for (const WaylandArgument &a : e.arguments) { |