diff options
author | Elliott Hughes <enh@google.com> | 2017-08-03 00:31:32 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-08-03 00:31:32 +0000 |
commit | 3919c537cfbffd2b584f35951c35b64254090798 (patch) | |
tree | aa8565a365f7aec8f72b95bfaaa81329f1db3804 | |
parent | cd3b01611d3fffc70c704b796f2aefa6d12bf077 (diff) | |
parent | e4e4f4e88de083bf4c918418658b620961f33847 (diff) | |
download | adb-main.tar.gz |
Merge "Fix reference to out of scope local in adb_thread_setname." am: b31ca1a64f am: 15d565bbca am: b664dd38b9HEADmastermain
am: df5ecefde4
Change-Id: I27605565fbbf5b07939c8df4a686ea25bcb62669
-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 } |