From a808eaa9bb54de37e6987b5e6145d5be2b225edc Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Fri, 15 Feb 2019 13:09:36 +0100 Subject: [PATCH] check for empty X11 clipboard data --- src/input.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/input.c b/src/input.c index 94eae995..d7270845 100644 --- a/src/input.c +++ b/src/input.c @@ -536,14 +536,17 @@ static int Handle_SelectionNotify(const XSelectionEvent* xselection) GFX2_Log(GFX2_DEBUG, "Clipboard value=%p %lu bytes format=%d type=%s\n", value, count, format, type_name); XFree(type_name); - X11_clipboard_size = count; - if (xselection->target == XInternAtom(X11_display, "UTF8_STRING", False)) - X11_clipboard = strdup((char *)value); // Text Clipboard - else if (xselection->target == XInternAtom(X11_display, "image/png", False)) - { // Picture clipboard (PNG) - X11_clipboard = malloc(count); - if (X11_clipboard != NULL) - memcpy(X11_clipboard, value, count); + if (count > 0) + { + X11_clipboard_size = count; + if (xselection->target == XInternAtom(X11_display, "UTF8_STRING", False)) + X11_clipboard = strdup((char *)value); // Text Clipboard + else if (xselection->target == XInternAtom(X11_display, "image/png", False)) + { // Picture clipboard (PNG) + X11_clipboard = malloc(count); + if (X11_clipboard != NULL) + memcpy(X11_clipboard, value, count); + } } XFree(value); }