diff --git a/mozilla/nsprpub/pr/src/pthreads/ptthread.c b/mozilla/nsprpub/pr/src/pthreads/ptthread.c index c4ac2dca36d..9b98dd25c54 100644 --- a/mozilla/nsprpub/pr/src/pthreads/ptthread.c +++ b/mozilla/nsprpub/pr/src/pthreads/ptthread.c @@ -1631,11 +1631,11 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name) return PR_FAILURE; PR_Free(thread->name); - nameLen = strlen(name) + 1; - thread->name = (char *)PR_Malloc(nameLen); + nameLen = strlen(name); + thread->name = (char *)PR_Malloc(nameLen + 1); if (!thread->name) return PR_FAILURE; - memcpy(thread->name, name, nameLen); + memcpy(thread->name, name, nameLen + 1); #if defined(OPENBSD) || defined(FREEBSD) result = pthread_set_name_np(thread->id, name); @@ -1659,13 +1659,12 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name) #define SETNAME_LENGTH_CONSTRAINT 15 #define SETNAME_FRAGMENT1_LENGTH (SETNAME_LENGTH_CONSTRAINT >> 1) #define SETNAME_FRAGMENT2_LENGTH \ - (SETNAME_LENGTH_CONSTRAINT - SETNAME_FRAGMENT1_LENGTH - 2) + (SETNAME_LENGTH_CONSTRAINT - SETNAME_FRAGMENT1_LENGTH - 1) char name_dup[SETNAME_LENGTH_CONSTRAINT + 1]; - if (nameLen > SETNAME_LENGTH_CONSTRAINT + 1) { + if (nameLen > SETNAME_LENGTH_CONSTRAINT) { memcpy(name_dup, name, SETNAME_FRAGMENT1_LENGTH); - name_dup[SETNAME_FRAGMENT1_LENGTH] = '.'; - name_dup[SETNAME_FRAGMENT1_LENGTH + 1] = '.'; - memcpy(name_dup + SETNAME_FRAGMENT1_LENGTH + 2, + name_dup[SETNAME_FRAGMENT1_LENGTH] = '~'; + memcpy(name_dup + SETNAME_FRAGMENT1_LENGTH + 1, name + nameLen - SETNAME_FRAGMENT2_LENGTH, SETNAME_FRAGMENT2_LENGTH); name_dup[SETNAME_LENGTH_CONSTRAINT] = '\0'; diff --git a/mozilla/nsprpub/pr/src/threads/combined/pruthr.c b/mozilla/nsprpub/pr/src/threads/combined/pruthr.c index fa5f5209854..7ecccf555d9 100644 --- a/mozilla/nsprpub/pr/src/threads/combined/pruthr.c +++ b/mozilla/nsprpub/pr/src/threads/combined/pruthr.c @@ -1597,11 +1597,11 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name) return PR_FAILURE; PR_Free(thread->name); - nameLen = strlen(name) + 1; - thread->name = (char *)PR_Malloc(nameLen); + nameLen = strlen(name); + thread->name = (char *)PR_Malloc(nameLen + 1); if (!thread->name) return PR_FAILURE; - memcpy(thread->name, name, nameLen); + memcpy(thread->name, name, nameLen + 1); _PR_MD_SET_CURRENT_THREAD_NAME(thread->name); return PR_SUCCESS; }