Merge pull request #154 from D4N/stringFormat_update

stringFormat update / ammendment to #137
v0.27.3
Luis Díaz Más 8 years ago committed by GitHub
commit a79b75a67b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1005,12 +1005,18 @@ namespace Exiv2 {
size_t need = std::strlen(format); // initial guess
int rc = -1;
// vsnprintf writes at most size (2nd parameter) bytes (including \0)
// returns the number of bytes required for the formatted string excluding \0
// the following loop goes through:
// one iteration (if 'need' was large enough for the for formatted string)
// or two iterations (after the first call to vsnprintf we know the required length)
do {
buffer.resize(need + 1);
va_list args; // variable arg list
va_start(args, format); // args start after format
rc = vsnprintf(&buffer[0], buffer.size(), format, args);
va_end(args); // free the args
assert(rc >= 0); // rc < 0 => we have made an error in the format string
if ( rc > 0 )
need = static_cast<size_t>(rc);
} while ( buffer.size() <= need );

Loading…
Cancel
Save