Bug 758837: Use a smarter way to reduce the thread names passed to

PR_SetCurrentThreadName to 16 characters long. Elide the middle part of
a long name with "..".  The patch is contributed by Honza Bambas
<honzab.moz@firemni.cz>.  r=wtc.


git-svn-id: svn://10.0.0.236/trunk@263965 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
wtc%google.com 2012-06-19 21:22:53 +00:00
parent 47aa365128
commit 691fb53d98

View File

@ -1657,9 +1657,17 @@ 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 - 2)
char name_dup[SETNAME_LENGTH_CONSTRAINT + 1];
if (nameLen > SETNAME_LENGTH_CONSTRAINT + 1) {
memcpy(name_dup, name, 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 + nameLen - SETNAME_FRAGMENT2_LENGTH,
SETNAME_FRAGMENT2_LENGTH);
name_dup[SETNAME_LENGTH_CONSTRAINT] = '\0';
name = name_dup;
}