summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/client/qwaylandbuffer_p.h5
-rw-r--r--src/client/qwaylandshmbackingstore.cpp12
2 files changed, 12 insertions, 5 deletions
diff --git a/src/client/qwaylandbuffer_p.h b/src/client/qwaylandbuffer_p.h
index 2bb9990f3..6d2bb66b3 100644
--- a/src/client/qwaylandbuffer_p.h
+++ b/src/client/qwaylandbuffer_p.h
@@ -54,7 +54,10 @@ QT_BEGIN_NAMESPACE
class Q_WAYLAND_CLIENT_EXPORT QWaylandBuffer {
public:
- QWaylandBuffer() { }
+ QWaylandBuffer()
+ : mBuffer(0)
+ {
+ }
virtual ~QWaylandBuffer() { }
wl_buffer *buffer() {return mBuffer;}
virtual QSize size() const = 0;
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
index 6ca65f053..598e9f160 100644
--- a/src/client/qwaylandshmbackingstore.cpp
+++ b/src/client/qwaylandshmbackingstore.cpp
@@ -58,7 +58,8 @@ QT_BEGIN_NAMESPACE
QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display,
const QSize &size, QImage::Format format)
- : mMarginsImage(0)
+ : mShmPool(0)
+ , mMarginsImage(0)
{
int stride = size.width() * 4;
int alloc = stride * size.height();
@@ -97,9 +98,12 @@ QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display,
QWaylandShmBuffer::~QWaylandShmBuffer(void)
{
delete mMarginsImage;
- munmap((void *) mImage.constBits(), mImage.byteCount());
- wl_buffer_destroy(mBuffer);
- wl_shm_pool_destroy(mShmPool);
+ if (mImage.constBits())
+ munmap((void *) mImage.constBits(), mImage.byteCount());
+ if (mBuffer)
+ wl_buffer_destroy(mBuffer);
+ if (mShmPool)
+ wl_shm_pool_destroy(mShmPool);
}
QImage *QWaylandShmBuffer::imageInsideMargins(const QMargins &margins)