X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fmalloc.c;h=51b8ff6aecf93e7015b08ed2c13cf9d653d91122;hb=b6a614b20d4df2ef40c7213a6c448341f3e20ac5;hp=9b0e22e12b70ae7aa88065a75c2a2ef59232efae;hpb=7ada090e70d25937d27b2e93b0dab4d9d68c5d23;p=catta diff --git a/avahi-common/malloc.c b/avahi-common/malloc.c index 9b0e22e..51b8ff6 100644 --- a/avahi-common/malloc.c +++ b/avahi-common/malloc.c @@ -31,6 +31,14 @@ #include "malloc.h" +#ifndef va_copy +#ifdef __va_copy +#define va_copy(DEST,SRC) __va_copy((DEST),(SRC)) +#else +#define va_copy(DEST,SRC) memcpy(&(DEST), &(SRC), sizeof(va_list)) +#endif +#endif + static const AvahiAllocator *allocator = NULL; static void oom(void) AVAHI_GCC_NORETURN; @@ -192,7 +200,7 @@ void avahi_set_allocator(const AvahiAllocator *a) { } char *avahi_strdup_vprintf(const char *fmt, va_list ap) { - size_t len = 100; + size_t len = 80; char *buf; assert(fmt); @@ -203,8 +211,11 @@ char *avahi_strdup_vprintf(const char *fmt, va_list ap) { for (;;) { int n; char *nbuf; - - n = vsnprintf(buf, len, fmt, ap); + va_list ap2; + + va_copy (ap2, ap); + n = vsnprintf(buf, len, fmt, ap2); + va_end (ap2); if (n >= 0 && n < (int) len) return buf;