[X2Go-Commits] [nx-libs] 49/108: Clipboard.c: add macro for safe XFree calls with ptr clearance

git-admin at x2go.org git-admin at x2go.org
Fri Nov 9 20:35:44 CET 2018


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository nx-libs.

commit 85a28a68e90537c3b82e83bd8ff07a8e116ff00a
Author: Ulrich Sibiller <uli42 at gmx.de>
Date:   Tue Oct 9 23:00:08 2018 +0200

    Clipboard.c: add macro for safe XFree calls with ptr clearance
---
 nx-X11/programs/Xserver/hw/nxagent/Clipboard.c | 53 ++++++++------------------
 nx-X11/programs/Xserver/hw/nxagent/Utils.h     |  2 +
 2 files changed, 18 insertions(+), 37 deletions(-)

diff --git a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
index 0b78c2f..a928715 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
@@ -211,9 +211,9 @@ void nxagentPrintClipboardStat(char *header)
 
   fprintf(stderr, "lastServer\n");
   fprintf(stderr, "  lastServerRequestor           (Window) [0x%x]\n", lastServerRequestor);
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, lastServerProperty);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, lastServerProperty);
   fprintf(stderr, "  lastServerProperty              (Atom) [% 4d][%s]\n", lastServerProperty, s);
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, lastServerTarget);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, lastServerTarget);
   fprintf(stderr, "  lastServerTarget                (Atom) [% 4d][%s]\n", lastServerTarget, s);
   fprintf(stderr, "  lastServerTime                  (Time) [%u]\n", lastServerTime);
 
@@ -246,18 +246,18 @@ void nxagentPrintClipboardStat(char *header)
   fprintf(stderr, "  CurrentSelections[].window             [0x%x]\n", CurrentSelections[nxagentClipboardSelection].window);
 
   fprintf(stderr, "Atoms (server side)\n");
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverTARGETS);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, serverTARGETS);
   fprintf(stderr, "  serverTARGETS                          [% 4d][%s]\n", serverTARGETS, validateString(s));
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverTEXT);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, serverTEXT);
   fprintf(stderr, "  serverTEXT                             [% d][%s]\n", serverTEXT, s);
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverUTF8_STRING);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, serverUTF8_STRING);
   fprintf(stderr, "  serverUTF8_STRING                      [% 4d][%s]\n", serverUTF8_STRING, s);
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, serverCutProperty);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, serverCutProperty);
   fprintf(stderr, "  serverCutProperty                      [% 4d][%s]\n", serverCutProperty, s);
 
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, nxagentClipboardAtom);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, nxagentClipboardAtom);
   fprintf(stderr, "  nxagentClipboardAtom                   [% 4d][%s]\n", nxagentClipboardAtom, s);
-  if (s) XFree(s); s = XGetAtomName(nxagentDisplay, nxagentTimestampAtom);
+  SAFE_XFree(s); s = XGetAtomName(nxagentDisplay, nxagentTimestampAtom);
   fprintf(stderr, "  nxagentTimestampAtom                   [% 4d][%s]\n", nxagentTimestampAtom, s);
 
   fprintf(stderr, "Atoms (inside nxagent)\n");
@@ -270,7 +270,7 @@ void nxagentPrintClipboardStat(char *header)
 
   fprintf(stderr, "\\------------------------------------------------------------------------------\n");
 
-  if (s) XFree(s); s = NULL;
+  SAFE_XFree(s);
 #endif
 }
 
@@ -460,10 +460,7 @@ FIXME: Do we need this?
     fprintf(stderr, "SelectionRequest event aborting sele=[%s] ext target=[%s] Atom size is [%d]\n",
                 validateString(NameForAtom(X->xselectionrequest.selection)), strTarget, sizeof(Atom));
 
-    if (strTarget != NULL)
-    {
-      XFree(strTarget);
-    }
+    SAFE_XFree(strTarget);
 */
     memset(&eventSelection, 0, sizeof(XSelectionEvent));
     eventSelection.property = None;
@@ -843,11 +840,7 @@ void nxagentCollectPropertyEvent(int resource)
     lastClientWindowPtr = NULL;
     SetClientSelectionStage(None);
 
-    if (pszReturnData != NULL)
-    {
-      XFree(pszReturnData);
-    }
-
+    SAFE_XFree(pszReturnData);
     return;
   }
  
@@ -867,11 +860,7 @@ void nxagentCollectPropertyEvent(int resource)
     lastClientWindowPtr = NULL;
     SetClientSelectionStage(None);
 
-    if (pszReturnData != NULL)
-    {
-      XFree(pszReturnData);
-    }
-
+    SAFE_XFree(pszReturnData);
     return;
   }
 
@@ -897,11 +886,7 @@ void nxagentCollectPropertyEvent(int resource)
         lastClientWindowPtr = NULL;
         SetClientSelectionStage(None);
 
-        if (pszReturnData != NULL)
-        {
-          XFree(pszReturnData);
-        }
-
+        SAFE_XFree(pszReturnData);
         return;
       }
 
@@ -940,11 +925,7 @@ void nxagentCollectPropertyEvent(int resource)
         lastClientWindowPtr = NULL;
         SetClientSelectionStage(None);
 
-        if (pszReturnData != NULL)
-        {
-          XFree(pszReturnData);
-        }
-
+        SAFE_XFree(pszReturnData);
         return;
       }
 
@@ -985,8 +966,7 @@ void nxagentCollectPropertyEvent(int resource)
     }
   }
 
-  XFree(pszReturnData);
-  pszReturnData = NULL;
+  SAFE_XFree(pszReturnData);
 }
 
 void nxagentNotifySelection(XEvent *X)
@@ -1122,8 +1102,7 @@ void nxagentNotifySelection(XEvent *X)
           }
 
           /*
-           * XFree(pszReturnData);
-           * pszReturnData=NULL;
+           * SAFE_XFree(pszReturnData);
            */
 
         }
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Utils.h b/nx-X11/programs/Xserver/hw/nxagent/Utils.h
index 63904e2..c0ad033 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Utils.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Utils.h
@@ -44,4 +44,6 @@ static inline const char * validateString(const char *str) {
   return str ? str : "(null)";
 }
 
+#define SAFE_XFree(what) do {if (what) {XFree(what); what = NULL;}} while (0)
+
 #endif /* __Utils_H__ */

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list