diff --git a/CHANGES b/CHANGES index 83ff9ab..455037a 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ CHANGES IN Mini-XML 2.7 - The shared library did not include a destructor for the thread- specific data key on UNIX-based operating systems (STR #103) - mxmlLoad* did not error out on XML with multiple root nodes (STR #101) + - Fixed an issue with the _mxml_vstrdupf function (STR #107) CHANGES IN Mini-XML 2.6 diff --git a/mxml-string.c b/mxml-string.c index 6ccbbca..5a2c3f9 100644 --- a/mxml-string.c +++ b/mxml-string.c @@ -418,9 +418,10 @@ char * /* O - New string pointer */ _mxml_vstrdupf(const char *format, /* I - Printf-style format string */ va_list ap) /* I - Pointer to additional arguments */ { - int bytes; /* Number of bytes required */ - char *buffer, /* String buffer */ - temp[256]; /* Small buffer for first vsnprintf */ + int bytes; /* Number of bytes required */ + char *buffer, /* String buffer */ + temp[256]; /* Small buffer for first vsnprintf */ + va_list apcopy; /* Copy of argument list */ /* @@ -428,7 +429,8 @@ _mxml_vstrdupf(const char *format, /* I - Printf-style format string */ * needed... */ - bytes = vsnprintf(temp, sizeof(temp), format, ap); + va_copy(apcopy, ap); + bytes = vsnprintf(temp, sizeof(temp), format, apcopy); if (bytes < sizeof(temp)) {