From 13db99b0f829791ed3d794b73f9cdccd99c46939 Mon Sep 17 00:00:00 2001 From: Rabit Date: Tue, 24 Mar 2020 23:51:54 -0700 Subject: [PATCH] Prevent memory leak in copypaste of the screencopy example If someone want to use screencopy as is processing multiple screenshots - it could be hard to find this issue with shm. --- examples/screencopy.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/examples/screencopy.c b/examples/screencopy.c index 28ad7f06..cf4652f4 100644 --- a/examples/screencopy.c +++ b/examples/screencopy.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include "wlr-screencopy-unstable-v1-client-protocol.h" @@ -111,6 +112,9 @@ static void frame_handle_buffer(void *data, buffer.width = width; buffer.height = height; buffer.stride = stride; + + // Make sure the buffer is not allocated + assert(!buffer.wl_buffer); buffer.wl_buffer = create_shm_buffer(format, width, height, stride, &buffer.data); if (buffer.wl_buffer == NULL) { @@ -257,6 +261,7 @@ int main(int argc, char *argv[]) { write_image("wayland-screenshot.png", buffer.format, buffer.width, buffer.height, buffer.stride, buffer.y_invert, buffer.data); wl_buffer_destroy(buffer.wl_buffer); + munmap(buffer.data, buffer.stride * buffer.height); return EXIT_SUCCESS; }