summaryrefslogtreecommitdiff
path: root/src/vasprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vasprintf.c')
-rw-r--r--src/vasprintf.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/vasprintf.c b/src/vasprintf.c
index 648dda4..7a18bed 100644
--- a/src/vasprintf.c
+++ b/src/vasprintf.c
@@ -108,7 +108,7 @@ you use strange formats.
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: vasprintf.c,v 1.10 2012/08/09 16:40:04 christos Exp $")
+FILE_RCSID("@(#)$File: vasprintf.c,v 1.13 2014/12/04 15:56:46 christos Exp $")
#endif /* lint */
#include <assert.h>
@@ -559,7 +559,7 @@ static int dispatch(xprintf_struct *s)
*/
static int core(xprintf_struct *s)
{
- size_t len, save_len;
+ size_t save_len;
char *dummy_base;
/* basic checks */
@@ -584,8 +584,7 @@ static int core(xprintf_struct *s)
for (;;) {
/* up to end of source string */
if (*(s->src_string) == 0) {
- *(s->dest_string) = 0; /* final 0 */
- len = s->real_len + 1;
+ *(s->dest_string) = '\0'; /* final NUL */
break;
}
@@ -594,15 +593,13 @@ static int core(xprintf_struct *s)
/* up to end of dest string */
if (s->real_len >= s->maxlen) {
- (s->buffer_base)[s->maxlen] = 0; /* final 0 */
- len = s->maxlen + 1;
+ (s->buffer_base)[s->maxlen] = '\0'; /* final NUL */
break;
}
}
/* for (v)asnprintf */
dummy_base = s->buffer_base;
- save_len = 0; /* just to avoid a compiler warning */
dummy_base = s->buffer_base + s->real_len;
save_len = s->real_len;
@@ -636,11 +633,15 @@ int vasprintf(char **ptr, const char *format_string, va_list vargs)
#ifdef va_copy
va_copy (s.vargs, vargs);
#else
-#ifdef __va_copy
+# ifdef __va_copy
__va_copy (s.vargs, vargs);
-#else
- memcpy (&s.vargs, vargs, sizeof (va_list));
-#endif /* __va_copy */
+# else
+# ifdef WIN32
+ s.vargs = vargs;
+# else
+ memcpy (&s.vargs, &vargs, sizeof (s.va_args));
+# endif /* WIN32 */
+# endif /* __va_copy */
#endif /* va_copy */
s.maxlen = (size_t)INT_MAX;