Index: src/platform-win32.cc |
=================================================================== |
--- src/platform-win32.cc (revision 7294) |
+++ src/platform-win32.cc (working copy) |
@@ -754,9 +754,13 @@ |
void OS::StrNCpy(Vector<char> dest, const char* src, size_t n) { |
+ // Use _TRUNCATE or strncpy_s crashes (by design) if buffer is too small. |
+ size_t buffer_size = static_cast<size_t>(dest.length()); |
+ if (n + 1 > buffer_size) // count for trailing '\0' |
+ n = _TRUNCATE; |
int result = strncpy_s(dest.start(), dest.length(), src, n); |
USE(result); |
- ASSERT(result == 0); |
+ ASSERT(result == 0 || (n == _TRUNCATE && result == STRUNCATE)); |
} |