add GNUNET_freez for #6186
authorChristian Grothoff <christian@grothoff.org>
Fri, 17 Apr 2020 16:21:17 +0000 (18:21 +0200)
committerChristian Grothoff <christian@grothoff.org>
Fri, 17 Apr 2020 16:21:17 +0000 (18:21 +0200)
src/include/gnunet_common.h

index 6a4e218232c6fb7eeee97e07503eae305f16d0c5..78aeb3de7bab60724a5c257a31fe4f7430a7a5d5 100644 (file)
@@ -1291,6 +1291,20 @@ GNUNET_is_zero_ (const void *a,
  */
 #define GNUNET_free(ptr) GNUNET_xfree_ (ptr, __FILE__, __LINE__)
 
+/**
+ * @ingroup memory
+ * Wrapper around free. Frees the memory referred to by ptr and sets ptr to NULL.
+ * Note that it is generally better to free memory that was
+ * allocated with #GNUNET_array_grow using #GNUNET_array_grow(mem, size, 0) instead of #GNUNET_freez.
+ *
+ * @param ptr location where to free the memory. ptr must have
+ *     been returned by #GNUNET_strdup, #GNUNET_strndup, #GNUNET_malloc or #GNUNET_array_grow earlier.
+ */
+#define GNUNET_freez(ptr) do { \
+    GNUNET_xfree_ (ptr, __FILE__, __LINE__); \
+    ptr = NULL; \
+} while (0)
+
 /**
  * @ingroup memory
  * Free the memory pointed to by ptr if ptr is not NULL.
@@ -1302,7 +1316,7 @@ GNUNET_is_zero_ (const void *a,
   do                              \
   {                               \
     void *__x__ = ptr;            \
-    if (__x__ != NULL)            \
+    if (NULL != __x__)            \
     {                             \
       GNUNET_free (__x__);        \
     }                             \