From 0bd52468b354420ce99fbb1217db0b7d11a34536 Mon Sep 17 00:00:00 2001 From: "dimich@chromium.org" Date: Mon, 21 Mar 2011 23:06:38 +0000 Subject: [PATCH] Fix Win32 bots - they crash/timeout on too long thread name. 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 | 6 +++++- src/win32-headers.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/platform-win32.cc b/src/platform-win32.cc index e7a25fa..69bcfdf 100644 --- a/src/platform-win32.cc +++ b/src/platform-win32.cc @@ -754,9 +754,13 @@ char* OS::StrChr(char* str, int c) { void OS::StrNCpy(Vector 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(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)); } diff --git a/src/win32-headers.h b/src/win32-headers.h index b51a38a..fca5c13 100644 --- a/src/win32-headers.h +++ b/src/win32-headers.h @@ -66,6 +66,7 @@ #endif // __MINGW32__ #ifndef __MINGW32__ #include // For SymLoadModule64 and al. +#include // For STRUNCATE #endif // __MINGW32__ #include // For INT_MAX and al. #include // For Module32First and al. -- 2.7.4