| 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; | 
| } | 
|  | 
|  |