libgnunetutil: add file, line debug info to multidimensional array allocators
authorMarkus Teich <teichm@fs.tum.de>
Sun, 9 Oct 2016 11:51:12 +0000 (11:51 +0000)
committerMarkus Teich <teichm@fs.tum.de>
Sun, 9 Oct 2016 11:51:12 +0000 (11:51 +0000)
src/include/gnunet_common.h
src/util/common_allocation.c

index dfe8effcd527c429aaba09079b0d252a17220d99..dcd0c605685697ebbd7e8054ba7d3b363c7a7ddb 100644 (file)
@@ -807,7 +807,7 @@ GNUNET_ntoh_double (double d);
  * @param m size of the second dimension
  * @param type name of the struct or union, i.e. pass 'struct Foo'.
  */
-#define GNUNET_new_array_2d(n, m, type) (type **) GNUNET_xnew_array_2d_ (n, m, sizeof (type))
+#define GNUNET_new_array_2d(n, m, type) (type **) GNUNET_xnew_array_2d_ (n, m, sizeof (type), __FILE__, __LINE__)
 
 /**
  * @ingroup memory
@@ -819,7 +819,7 @@ GNUNET_ntoh_double (double d);
  * @param o size of the third dimension
  * @param type name of the struct or union, i.e. pass 'struct Foo'.
  */
-#define GNUNET_new_array_3d(n, m, o, type) (type ***) GNUNET_xnew_array_3d_ (n, m, o, sizeof (type))
+#define GNUNET_new_array_3d(n, m, o, type) (type ***) GNUNET_xnew_array_3d_ (n, m, o, sizeof (type), __FILE__, __LINE__)
 
 /**
  * @ingroup memory
@@ -1001,10 +1001,13 @@ GNUNET_xmalloc_ (size_t size, const char *filename, int linenumber);
  * @param n size of the first dimension
  * @param m size of the second dimension
  * @param elementSize size of a single element in bytes
+ * @param filename where is this call being made (for debugging)
+ * @param linenumber line where this call is being made (for debugging)
  * @return allocated memory, never NULL
  */
 void **
-GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize);
+GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize,
+                       const char *filename, int linenumber);
 
 
 /**
@@ -1018,10 +1021,13 @@ GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize);
  * @param m size of the second dimension
  * @param o size of the third dimension
  * @param elementSize size of a single element in bytes
+ * @param filename where is this call being made (for debugging)
+ * @param linenumber line where this call is being made (for debugging)
  * @return allocated memory, never NULL
  */
 void ***
-GNUNET_xnew_array_3d_ (size_t n, size_t m, size_t o, size_t elementSize);
+GNUNET_xnew_array_3d_ (size_t n, size_t m, size_t o, size_t elementSize,
+                       const char *filename, int linenumber);
 
 
 /**
index f5b68356911df21c98829d3eb799d7776fe02d47..71a2221eec46757b44590a9362836cdad77bda11 100644 (file)
@@ -95,14 +95,18 @@ GNUNET_xmalloc_ (size_t size,
  * @param n size of the first dimension
  * @param m size of the second dimension
  * @param elementSize size of a single element in bytes
+ * @param filename where is this call being made (for debugging)
+ * @param linenumber line where this call is being made (for debugging)
  * @return allocated memory, never NULL
  */
 void **
-GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize)
+GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize,
+                       const char *filename, int linenumber)
 {
        /* use char pointer internally to avoid void pointer arithmetic warnings */
-       char **ret = GNUNET_malloc (n * sizeof (void *) +  /* 1. dim header */
-                                   n * m * elementSize);  /* element data */
+       char **ret = GNUNET_xmalloc_ (n * sizeof (void *) +  /* 1. dim header */
+                                     n * m * elementSize,   /* element data */
+                                     filename, linenumber);
 
        for (size_t i = 0; i < n; i++)
                ret[i] = (char *)ret +          /* base address */
@@ -123,15 +127,19 @@ GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize)
  * @param m size of the second dimension
  * @param o size of the third dimension
  * @param elementSize size of a single element in bytes
+ * @param filename where is this call being made (for debugging)
+ * @param linenumber line where this call is being made (for debugging)
  * @return allocated memory, never NULL
  */
 void ***
-GNUNET_xnew_array_3d_ (size_t n, size_t m, size_t o, size_t elementSize)
+GNUNET_xnew_array_3d_ (size_t n, size_t m, size_t o, size_t elementSize,
+                       const char *filename, int linenumber)
 {
        /* use char pointer internally to avoid void pointer arithmetic warnings */
-       char ***ret = GNUNET_malloc (n * sizeof (void **) +     /* 1. dim header */
-                                    n * m * sizeof (void *) +  /* 2. dim header */
-                                    n * m * o * elementSize);  /* element data */
+       char ***ret = GNUNET_xmalloc_ (n * sizeof (void **) +    /* 1. dim header */
+                                      n * m * sizeof (void *) + /* 2. dim header */
+                                      n * m * o * elementSize,  /* element data */
+                                      filename, linenumber);
 
        for (size_t i = 0; i < n; i++)
        {