From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]); by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id a0524116; for ; Fri, 20 Mar 2015 10:25:42 -0500 (EST) Date: Fri, 20 Mar 2015 10:25:42 -0500 (EST) Message-Id: <16121298940978232821.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Patch from Christian Neukirchen : X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Patch from Christian Neukirchen : He reports that on some platforms, it is not possible to use the same va_list twice. So use va_copy(3) for additional safety. Modified Files: -------------- mdocml: compat_vasprintf.c Revision Data ------------- Index: compat_vasprintf.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/compat_vasprintf.c,v retrieving revision 1.1 retrieving revision 1.2 diff -Lcompat_vasprintf.c -Lcompat_vasprintf.c -u -p -r1.1 -r1.2 --- compat_vasprintf.c +++ compat_vasprintf.c @@ -37,10 +37,14 @@ int vasprintf(char **ret, const char *format, va_list ap) { char buf[2]; + va_list ap2; int sz; - if ((sz = vsnprintf(buf, sizeof(buf), format, ap)) != -1 && - (*ret = malloc(sz + 1)) != NULL) { + va_copy(ap2, ap); + sz = vsnprintf(buf, sizeof(buf), format, ap2); + va_end(ap2); + + if (sz != -1 && (*ret = malloc(sz + 1)) != NULL) { if (vsnprintf(*ret, sz + 1, format, ap) == sz) return(sz); free(*ret); -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv