Merge branch 'jk/maint-snprintf-va-copy' into maint
* jk/maint-snprintf-va-copy: compat/snprintf: don't look at va_list twice
This commit is contained in:
commit
7fc1495b18
@ -19,11 +19,14 @@
|
|||||||
#undef vsnprintf
|
#undef vsnprintf
|
||||||
int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap)
|
int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap)
|
||||||
{
|
{
|
||||||
|
va_list cp;
|
||||||
char *s;
|
char *s;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (maxsize > 0) {
|
if (maxsize > 0) {
|
||||||
ret = vsnprintf(str, maxsize-SNPRINTF_SIZE_CORR, format, ap);
|
va_copy(cp, ap);
|
||||||
|
ret = vsnprintf(str, maxsize-SNPRINTF_SIZE_CORR, format, cp);
|
||||||
|
va_end(cp);
|
||||||
if (ret == maxsize-1)
|
if (ret == maxsize-1)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
/* Windows does not NUL-terminate if result fills buffer */
|
/* Windows does not NUL-terminate if result fills buffer */
|
||||||
@ -42,7 +45,9 @@ int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap)
|
|||||||
if (! str)
|
if (! str)
|
||||||
break;
|
break;
|
||||||
s = str;
|
s = str;
|
||||||
ret = vsnprintf(str, maxsize-SNPRINTF_SIZE_CORR, format, ap);
|
va_copy(cp, ap);
|
||||||
|
ret = vsnprintf(str, maxsize-SNPRINTF_SIZE_CORR, format, cp);
|
||||||
|
va_end(cp);
|
||||||
if (ret == maxsize-1)
|
if (ret == maxsize-1)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user