namespace {
-#if FOLLY_HAVE_PTHREAD
+#if FOLLY_HAVE_PTHREAD && !_WIN32
pthread_t stdTidToPthreadId(std::thread::id tid) {
static_assert(
std::is_same<pthread_t, std::thread::native_handle_type>::value,
#if !FOLLY_HAVE_PTHREAD || _WIN32
return false;
#else
- auto trimmedName = name.fbstr().substr(0, kMaxThreadNameLength - 1);
+ name = name.subpiece(0, kMaxThreadNameLength - 1);
+ char buf[kMaxThreadNameLength] = {};
+ std::memcpy(buf, name.data(), name.size());
auto id = stdTidToPthreadId(tid);
#if FOLLY_HAS_PTHREAD_SETNAME_NP_THREAD_NAME
- return 0 == pthread_setname_np(id, trimmedName.c_str());
+ return 0 == pthread_setname_np(id, buf);
#elif FOLLY_HAS_PTHREAD_SETNAME_NP_NAME
// Since OS X 10.6 it is possible for a thread to set its own name,
// but not that of some other thread.
if (pthread_equal(pthread_self(), id)) {
- return 0 == pthread_setname_np(trimmedName.c_str());
+ return 0 == pthread_setname_np(buf);
}
return false;
#else