# HG changeset patch # User Bruno Haible # Date 1096626412 0 # Node ID a32d2a4a925f93ecbab6048185670b008c429381 # Parent dbb03bb624ade90289c746222255c5bcb23704ac Fixes, mostly from Simon Josefsson. diff --git a/lib/ChangeLog b/lib/ChangeLog --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,6 +1,8 @@ -2004-10-01 Bruno Haible - - * snprintf.c: Include . +2004-10-01 Simon Josefsson + Bruno Haible + + * snprintf.c: Include , , . + (snprintf): Declare 'args'. 2004-09-30 Simon Josefsson diff --git a/lib/snprintf.c b/lib/snprintf.c --- a/lib/snprintf.c +++ b/lib/snprintf.c @@ -20,10 +20,14 @@ # include #endif -/* Get specification. */ +/* Specification. */ #include "snprintf.h" -/* Get memcpy. */ +/* Get va_list, va_start, va_end. */ +#include +/* Get free. */ +#include +/* Get memcpy, size_t. */ #include /* Get vasnprintf. */ @@ -40,19 +44,24 @@ int snprintf (char *str, size_t size, const char *format, ...) { + char *output; size_t len; - char *out = vasnprintf (NULL, &len, format, args); + va_list args; - if (!out) + va_start (args, format); + output = vasnprintf (NULL, &len, format, args); + va_end (args); + + if (!output) return -1; if (str) { - memcpy (str, out, MIN (len + 1, size)); + memcpy (str, output, MIN (len + 1, size)); str[size - 1] = '\0'; } - free (out); + free (output); return len; }