X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-common%2Fmalloc.c;h=52e0962df25a25607f221435d2f16593b5fd8222;hb=4ddfb3cc4ac10efff11fc58693ae2aacf592fb73;hp=018a0c0d95e403f7e879f450985cd06621f979b6;hpb=4f0a5e7572a4257894b4bfede42c26d65152609e;p=catta diff --git a/avahi-common/malloc.c b/avahi-common/malloc.c index 018a0c0..52e0962 100644 --- a/avahi-common/malloc.c +++ b/avahi-common/malloc.c @@ -169,16 +169,16 @@ char *avahi_strdup(const char *s) { char *avahi_strndup(const char *s, size_t max) { char *r; size_t size; + const char *p; if (!s) return NULL; - size = strlen(s); - - if (size > max) - size = max; + for (p = s, size = 0; + size < max && *p; + p++, size++); - if (!(r = avahi_malloc(size+1))) + if (!(r = avahi_new(char, size+1))) return NULL; memcpy(r, s, size); @@ -192,7 +192,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 +203,13 @@ char *avahi_strdup_vprintf(const char *fmt, va_list ap) { for (;;) { int n; char *nbuf; + va_list ap2; + + va_copy (ap2, ap); - n = vsnprintf(buf, len, fmt, ap); + n = vsnprintf(buf, len, fmt, ap2); + + va_end (ap2); if (n >= 0 && n < (int) len) return buf;