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