diff --git a/skeletons/asn_internal.c b/skeletons/asn_internal.c index 91e537c48..06836b18f 100644 --- a/skeletons/asn_internal.c +++ b/skeletons/asn_internal.c @@ -17,19 +17,25 @@ asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, if(wrote < (ssize_t)buf_size) { if(wrote < 0) { if(buf != scratch) FREEMEM(buf); + va_end(args); return -1; } + va_end(args); break; } buf_size <<= 1; if(buf == scratch) { buf = MALLOC(buf_size); - if(!buf) return -1; + if(!buf) { + va_end(args); + return -1; + } } else { void *p = REALLOC(buf, buf_size); if(!p) { FREEMEM(buf); + va_end(args); return -1; } buf = p;