Bug 758837: shorten a long thread name by eliding the middle part of

the thread name with a '~'.
Bug 763410: fix compilation error on MinGW.
This commit is contained in:
Wan-Teh Chang 2012-06-20 15:46:33 -07:00
parent 756c5f818c
commit a60cb0b983
6 changed files with 21 additions and 9 deletions

View File

@ -1 +1 @@
NSPR_4_9_2_BETA1
NSPR_4_9_2_BETA2

View File

@ -10,3 +10,4 @@
*/
#error "Do not include this header file."

View File

@ -291,6 +291,7 @@ typedef struct tagTHREADNAME_INFO
void
_PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
{
#ifdef _MSC_VER
THREADNAME_INFO info;
if (!IsDebuggerPresent())
@ -308,6 +309,7 @@ _PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
(ULONG_PTR*)&info);
} __except(EXCEPTION_CONTINUE_EXECUTION) {
}
#endif
}
void

View File

@ -183,6 +183,7 @@ typedef struct tagTHREADNAME_INFO
void
_PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
{
#ifdef _MSC_VER
THREADNAME_INFO info;
if (!IsDebuggerPresent())
@ -200,6 +201,7 @@ _PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
(ULONG_PTR*)&info);
} __except(EXCEPTION_CONTINUE_EXECUTION) {
}
#endif
}
void

View File

@ -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);
@ -1657,9 +1657,16 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name)
return PR_SUCCESS;
#define SETNAME_LENGTH_CONSTRAINT 15
#define SETNAME_FRAGMENT1_LENGTH (SETNAME_LENGTH_CONSTRAINT >> 1)
#define SETNAME_FRAGMENT2_LENGTH \
(SETNAME_LENGTH_CONSTRAINT - SETNAME_FRAGMENT1_LENGTH - 1)
char name_dup[SETNAME_LENGTH_CONSTRAINT + 1];
if (nameLen > SETNAME_LENGTH_CONSTRAINT + 1) {
memcpy(name_dup, name, SETNAME_LENGTH_CONSTRAINT);
if (nameLen > SETNAME_LENGTH_CONSTRAINT) {
memcpy(name_dup, name, SETNAME_FRAGMENT1_LENGTH);
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';
name = name_dup;
}

View File

@ -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;
}