| Index: base/string_util_win.h
|
| diff --git a/base/string_util_win.h b/base/string_util_win.h
|
| index 8836f7442299c2252444cf4a2fb830deb1620538..d1addb03fa2da5db9fe015ec2da879f6467afe0f 100644
|
| --- a/base/string_util_win.h
|
| +++ b/base/string_util_win.h
|
| @@ -35,9 +35,12 @@ inline int strncmp16(const char16* s1, const char16* s2, size_t count) {
|
|
|
| inline int vsnprintf(char* buffer, size_t size,
|
| const char* format, va_list arguments) {
|
| - int length = vsnprintf_s(buffer, size, size - 1, format, arguments);
|
| - if (length < 0)
|
| - return _vscprintf(format, arguments);
|
| + int length = _vsprintf_p(buffer, size, format, arguments);
|
| + if (length < 0) {
|
| + if (size > 0)
|
| + buffer[0] = 0;
|
| + return _vscprintf_p(format, arguments);
|
| + }
|
| return length;
|
| }
|
|
|
| @@ -45,9 +48,12 @@ inline int vswprintf(wchar_t* buffer, size_t size,
|
| const wchar_t* format, va_list arguments) {
|
| DCHECK(IsWprintfFormatPortable(format));
|
|
|
| - int length = _vsnwprintf_s(buffer, size, size - 1, format, arguments);
|
| - if (length < 0)
|
| - return _vscwprintf(format, arguments);
|
| + int length = _vswprintf_p(buffer, size, format, arguments);
|
| + if (length < 0) {
|
| + if (size > 0)
|
| + buffer[0] = 0;
|
| + return _vscwprintf_p(format, arguments);
|
| + }
|
| return length;
|
| }
|
|
|
|
|