diff options
author | Elliott Hughes <enh@google.com> | 2017-08-03 00:15:37 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-08-03 00:15:37 +0000 |
commit | 517000a4a7bdb63392d2107b3aadd2710619bc17 (patch) | |
tree | 1fa877f4d21c4407c106810a0e3f6888d0992527 | |
parent | 425d48c7d0e0d75b4742d7b72e6ab0e2d6e50f9e (diff) | |
parent | fda46ba4632b59d6054b67c6c7e79898839f785b (diff) | |
download | adb-517000a4a7bdb63392d2107b3aadd2710619bc17.tar.gz |
Merge "Fix reference to out of scope local in adb_thread_setname."
am: b31ca1a64f
Change-Id: Idc5b3208b7868a2636b7c335c48db57dd48e8b83
-rw-r--r-- | sysdeps.h | 18 |
1 files changed, 6 insertions, 12 deletions
@@ -582,18 +582,12 @@ static __inline__ int adb_thread_setname(const std::string& name) { #ifdef __APPLE__ return pthread_setname_np(name.c_str()); #else - const char *s = name.c_str(); - - // pthread_setname_np fails rather than truncating long strings. - const int max_task_comm_len = 16; // including the null terminator - if (name.length() > (max_task_comm_len - 1)) { - char buf[max_task_comm_len]; - strncpy(buf, name.c_str(), sizeof(buf) - 1); - buf[sizeof(buf) - 1] = '\0'; - s = buf; - } - - return pthread_setname_np(pthread_self(), s) ; + // Both bionic and glibc's pthread_setname_np fails rather than truncating long strings. + // glibc doesn't have strlcpy, so we have to fake it. + char buf[16]; // MAX_TASK_COMM_LEN, but that's not exported by the kernel headers. + strncpy(buf, name.c_str(), sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + return pthread_setname_np(pthread_self(), buf); #endif } |