Merge "Fix undefined args access for x86_64."
This commit is contained in:
commit
ecb5dd697c
1 changed files with 11 additions and 2 deletions
|
|
@ -323,8 +323,17 @@ status_t String8::appendFormat(const char* fmt, ...)
|
||||||
|
|
||||||
status_t String8::appendFormatV(const char* fmt, va_list args)
|
status_t String8::appendFormatV(const char* fmt, va_list args)
|
||||||
{
|
{
|
||||||
int result = NO_ERROR;
|
int n, result = NO_ERROR;
|
||||||
int n = vsnprintf(NULL, 0, fmt, args);
|
va_list tmp_args;
|
||||||
|
|
||||||
|
/* args is undefined after vsnprintf.
|
||||||
|
* So we need a copy here to avoid the
|
||||||
|
* second vsnprintf access undefined args.
|
||||||
|
*/
|
||||||
|
va_copy(tmp_args, args);
|
||||||
|
n = vsnprintf(NULL, 0, fmt, tmp_args);
|
||||||
|
va_end(tmp_args);
|
||||||
|
|
||||||
if (n != 0) {
|
if (n != 0) {
|
||||||
size_t oldLength = length();
|
size_t oldLength = length();
|
||||||
char* buf = lockBuffer(oldLength + n);
|
char* buf = lockBuffer(oldLength + n);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue