Fix Win32 bots - they crash/timeout on too long thread name.
authordimich@chromium.org <dimich@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 21 Mar 2011 23:06:38 +0000 (23:06 +0000)
committerdimich@chromium.org <dimich@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 21 Mar 2011 23:06:38 +0000 (23:06 +0000)
Review URL: http://codereview.chromium.org/6676076

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7296 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/platform-win32.cc
src/win32-headers.h

index e7a25fa..69bcfdf 100644 (file)
@@ -754,9 +754,13 @@ char* OS::StrChr(char* str, int c) {
 
 
 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)); 
 }
 
 
index b51a38a..fca5c13 100644 (file)
@@ -66,6 +66,7 @@
 #endif  // __MINGW32__
 #ifndef __MINGW32__
 #include <dbghelp.h>  // For SymLoadModule64 and al.
+#include <errno.h>  // For STRUNCATE
 #endif  // __MINGW32__
 #include <limits.h>  // For INT_MAX and al.
 #include <tlhelp32.h>  // For Module32First and al.