chiark / gitweb /
NEW etc.: Provide size-safe wrappers for safe_malloc et al.
[secnet.git] / secnet.h
index 96717aea61eadd6ab18a05120bbe45dd1b19e67b..8e5dad05d964b55cdfa9a0a735f753100b0690d6 100644 (file)
--- a/secnet.h
+++ b/secnet.h
@@ -180,6 +180,16 @@ extern void *safe_malloc_ary(size_t size, size_t count, const char *message);
 extern void *safe_realloc_ary(void *p, size_t size, size_t count,
                              const char *message);
 
+#define NEW(p)                                 \
+    ((p)=safe_malloc(sizeof(*(p)),             \
+                    __FILE__ ":" #p))
+#define NEW_ARY(p,count)                                       \
+    ((p)=safe_malloc_ary(sizeof(*(p)),(count),                 \
+                        __FILE__ ":" #p "[" #count "]"))
+#define REALLOC_ARY(p,count)                                   \
+    ((p)=safe_realloc_ary((p),sizeof(*(p)),(count),            \
+                         __FILE__ ":" #p "[" #count "]"))
+
 void setcloexec(int fd); /* cannot fail */
 void setnonblock(int fd); /* cannot fail */
 void pipe_cloexec(int fd[2]); /* pipe(), setcloexec() twice; cannot fail */