Simplify impl of setThreadName
authorYedidya Feldblum <yfeldblum@fb.com>
Wed, 18 Oct 2017 02:28:49 +0000 (19:28 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 18 Oct 2017 02:40:07 +0000 (19:40 -0700)
Summary: [Folly] Simplify impl of `setThreadName`.

Reviewed By: Orvid, ot

Differential Revision: D6075179

fbshipit-source-id: 720f29cc688f97b936813898238b8eb26b8a6141

folly/ThreadName.cpp

index ed11c10..abc7eaa 100644 (file)
@@ -102,20 +102,17 @@ bool setThreadName(std::thread::id tid, StringPiece name) {
 #if !FOLLY_HAVE_PTHREAD || _WIN32
   return false;
 #else
-  auto const piece = name.subpiece(0, kMaxThreadNameLength - 1);
-  auto const data = piece.data();
-  auto const size = piece.size();
-  char trimmedName[kMaxThreadNameLength];
-  std::memcpy(trimmedName, data, size);
-  std::memset(trimmedName + size, 0, kMaxThreadNameLength - size);
+  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, const_cast<char const*>(trimmedName));
+  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(const_cast<char const*>(trimmedName));
+    return 0 == pthread_setname_np(buf);
   }
   return false;
 #else