Allow dereferenced pointers as input for GNUNET_array_grow and GNUNET_xgrow
authorlurchi <lurchi@strangeplace.net>
Thu, 28 Jun 2018 22:04:25 +0000 (00:04 +0200)
committerlurchi <lurchi@strangeplace.net>
Thu, 28 Jun 2018 22:04:25 +0000 (00:04 +0200)
This is now possible:
char ***server_addrs = NULL
unsigned int len = 0
GNUNET_array_append (*server_addrs, len, "8.8.8.8");

src/include/gnunet_common.h

index b4bf5b0aa17e80525552a329b4ad1701fdb3781d..1b982cc158da21cf3785c1b90a8f7f033ca663ad 100644 (file)
@@ -1074,7 +1074,7 @@ GNUNET_ntoh_double (double d);
  * @param tsize the target size for the resulting vector, use 0 to
  *        free the vector (then, arr will be NULL afterwards).
  */
-#define GNUNET_array_grow(arr,size,tsize) GNUNET_xgrow_((void**)&arr, sizeof(arr[0]), &size, tsize, __FILE__, __LINE__)
+#define GNUNET_array_grow(arr,size,tsize) GNUNET_xgrow_((void**)&(arr), sizeof((arr)[0]), &size, tsize, __FILE__, __LINE__)
 
 /**
  * @ingroup memory
@@ -1089,7 +1089,7 @@ GNUNET_ntoh_double (double d);
  *        array size
  * @param element the element that will be appended to the array
  */
-#define GNUNET_array_append(arr,size,element) do { GNUNET_array_grow(arr,size,size+1); arr[size-1] = element; } while(0)
+#define GNUNET_array_append(arr,size,element) do { GNUNET_array_grow(arr,size,size+1); (arr)[size-1] = element; } while(0)
 
 /**
  * @ingroup memory