Add stricter checks for netnames.
[tinc] / src / xalloc.h
index 397f7b0..28960fb 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef __TINC_XALLOC_H__
 #define __TINC_XALLOC_H__
 
+static inline void *xmalloc(size_t n) __attribute__ ((__malloc__));
 static inline void *xmalloc(size_t n) {
        void *p = malloc(n);
        if(!p)
@@ -27,6 +28,7 @@ static inline void *xmalloc(size_t n) {
        return p;
 }
 
+static inline void *xzalloc(size_t n) __attribute__ ((__malloc__));
 static inline void *xzalloc(size_t n) {
        void *p = calloc(1, n);
        if(!p)
@@ -41,6 +43,7 @@ static inline void *xrealloc(void *p, size_t n) {
        return p;
 }
 
+static inline char *xstrdup(const char *s) __attribute__ ((__malloc__));
 static inline char *xstrdup(const char *s) {
        char *p = strdup(s);
        if(!p)
@@ -49,12 +52,21 @@ static inline char *xstrdup(const char *s) {
 }
 
 static inline int xvasprintf(char **strp, const char *fmt, va_list ap) {
+#ifdef HAVE_MINGW
+       char buf[1024];
+       int result = vsnprintf(buf, sizeof buf, fmt, ap);
+       if(result < 0)
+               abort();
+       *strp = xstrdup(buf);
+#else
        int result = vasprintf(strp, fmt, ap);
        if(result < 0)
                abort();
+#endif
        return result;
 }
 
+static inline int xasprintf(char **strp, const char *fmt, ...) __attribute__ ((__format__(printf, 2, 3)));
 static inline int xasprintf(char **strp, const char *fmt, ...) {
        va_list ap;
        va_start(ap, fmt);