From d32b4f5b1a55e0bbca79701d2b89bede331fed75 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 3 Oct 2020 01:57:58 +0200 Subject: Clipboard.c: fix memleaks in DEBUG mode --- nx-X11/programs/Xserver/hw/nxagent/Clipboard.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c index 202eb1baa..74ed61d7f 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c @@ -2136,10 +2136,16 @@ int nxagentConvertSelection(ClientPtr client, WindowPtr pWin, Atom selection, * by a real time. The reply also contains time "0" which is * unexpected (for me) */ #ifdef DEBUG + char *t = XGetAtomName(nxagentDisplay, remTarget); + char *p = XGetAtomName(nxagentDisplay, remProperty); + char *s = XGetAtomName(nxagentDisplay, remSelection); fprintf(stderr, "%s: Sending XConvertSelection to real X server: requestor [0x%x] target [%ld][%s] property [%ld][%s] selection [%ld][%s] time [0][CurrentTime]\n", __func__, - serverWindow, remTarget, XGetAtomName(nxagentDisplay, remTarget), - remProperty, XGetAtomName(nxagentDisplay, remProperty), - remSelection, XGetAtomName(nxagentDisplay, remSelection)); + serverWindow, remTarget, validateString(t), + remProperty, validateString(p), + remSelection, validateString(s)); + SAFE_XFree(t); + SAFE_XFree(p); + SAFE_XFree(s); #endif XConvertSelection(nxagentDisplay, remSelection, remTarget, remProperty, serverWindow, CurrentTime); @@ -2193,8 +2199,10 @@ XlibAtom translateLocalToRemoteSelection(Atom local) } #ifdef DEBUG + char *r = XGetAtomName(nxagentDisplay, remote); fprintf(stderr, "%s: mapping local to remote selection: [%d][%s] -> [%ld] [%s]\n", __func__, - local, NameForAtom(local), remote, XGetAtomName(nxagentDisplay, remote)); + local, NameForAtom(local), remote, validateString(r)); + SAFE_XFree(r); #endif return remote; @@ -2235,8 +2243,10 @@ XlibAtom translateLocalToRemoteTarget(Atom local) } #ifdef DEBUG + char *r = XGetAtomName(nxagentDisplay, remote); fprintf(stderr, "%s: mapping local to remote target: [%d][%s] -> [%ld] [%s]\n", __func__, - local, NameForAtom(local), remote, XGetAtomName(nxagentDisplay, remote)); + local, NameForAtom(local), remote, validateString(r)); + SAFE_XFree(r); #endif return remote; -- cgit v1.2.3