diff options
author | Jan Arne Petersen <jan.petersen@kdab.com> | 2013-08-06 13:09:57 +0200 |
---|---|---|
committer | Andy Nichols <andy.nichols@digia.com> | 2013-08-06 14:08:23 +0200 |
commit | a57005f416acf2b3e4d56b6f4964df25cf7f7ffb (patch) | |
tree | c051fc83bffbc1ca7c7e669293068f83220923a3 /src/qtwaylandscanner | |
parent | 36504778f08620a74b82db6ef9333a54b3be43e8 (diff) |
Fix double frees in Wayland 1.2
Remove double frees in destroy_func generated by qwaylandscanner. The
wl_resource struct is already freed by wl_resource_destroy() in
wayland-server in Wayland 1.2.
Change-Id: Ibd42e42a23238ba9c665a7c918f9b547968f7146
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/qtwaylandscanner')
-rw-r--r-- | src/qtwaylandscanner/qtwaylandscanner.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/qtwaylandscanner/qtwaylandscanner.cpp b/src/qtwaylandscanner/qtwaylandscanner.cpp index c51916343..4c7990e88 100644 --- a/src/qtwaylandscanner/qtwaylandscanner.cpp +++ b/src/qtwaylandscanner/qtwaylandscanner.cpp @@ -367,6 +367,15 @@ void process(QXmlStreamReader &xml) printf("#include \"wayland-%s-server-protocol.h\"\n", QByteArray(protocolName).replace('_', '-').constData()); printf("#include <QByteArray>\n"); printf("#include <QString>\n"); + + printf("\n"); + printf("#ifndef WAYLAND_VERSION_CHECK\n"); + printf("#define WAYLAND_VERSION_CHECK(major, minor, micro) \\\n"); + printf(" (WAYLAND_VERSION_MAJOR > (major)) || \\\n"); + printf(" (WAYLAND_VERSION_MAJOR == (major) && WAYLAND_VERSION_MINOR > (minor)) || \\\n"); + printf(" (WAYLAND_VERSION_MAJOR == (major) && WAYLAND_VERSION_MINOR == (minor) && WAYLAND_VERSION_MICRO >= (micro))\n"); + printf("#endif\n"); + printf("\n"); printf("QT_BEGIN_NAMESPACE\n"); printf("\n"); @@ -531,7 +540,11 @@ void process(QXmlStreamReader &xml) printf(" %s::%s(struct ::wl_client *client, int id)\n", interfaceName, interfaceName); printf(" : m_resource(0)\n"); + printf("#if WAYLAND_VERSION_CHECK(1, 2, 0)\n"); + printf(" , m_ownResource(false)\n"); + printf("#else\n"); printf(" , m_ownResource(true)\n"); + printf("#endif\n"); printf(" , m_global(0)\n"); printf(" {\n"); printf(" wl_list_init(&m_resource_list);\n"); @@ -541,7 +554,11 @@ void process(QXmlStreamReader &xml) printf(" %s::%s(struct ::wl_display *display)\n", interfaceName, interfaceName); printf(" : m_resource(0)\n"); + printf("#if WAYLAND_VERSION_CHECK(1, 2, 0)\n"); + printf(" , m_ownResource(false)\n"); + printf("#else\n"); printf(" , m_ownResource(true)\n"); + printf("#endif\n"); printf(" , m_global(0)\n"); printf(" {\n"); printf(" wl_list_init(&m_resource_list);\n"); |