Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 091d6db

Browse files
committed
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.
1 parent 538c52f commit 091d6db

6 files changed

Lines changed: 21 additions & 9 deletions

File tree

nsprpub/TAG-INFO

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
NSPR_4_9_2_BETA1
1+
NSPR_4_9_2_BETA2

nsprpub/config/prdepend.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@
1010
*/
1111

1212
#error "Do not include this header file."
13+

nsprpub/pr/src/md/windows/ntthread.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ typedef struct tagTHREADNAME_INFO
291291
void
292292
_PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
293293
{
294+
#ifdef _MSC_VER
294295
THREADNAME_INFO info;
295296

296297
if (!IsDebuggerPresent())
@@ -308,6 +309,7 @@ _PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
308309
(ULONG_PTR*)&info);
309310
} __except(EXCEPTION_CONTINUE_EXECUTION) {
310311
}
312+
#endif
311313
}
312314

313315
void

nsprpub/pr/src/md/windows/w95thred.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ typedef struct tagTHREADNAME_INFO
183183
void
184184
_PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
185185
{
186+
#ifdef _MSC_VER
186187
THREADNAME_INFO info;
187188

188189
if (!IsDebuggerPresent())
@@ -200,6 +201,7 @@ _PR_MD_SET_CURRENT_THREAD_NAME(const char *name)
200201
(ULONG_PTR*)&info);
201202
} __except(EXCEPTION_CONTINUE_EXECUTION) {
202203
}
204+
#endif
203205
}
204206

205207
void

nsprpub/pr/src/pthreads/ptthread.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1631,11 +1631,11 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name)
16311631
return PR_FAILURE;
16321632

16331633
PR_Free(thread->name);
1634-
nameLen = strlen(name) + 1;
1635-
thread->name = (char *)PR_Malloc(nameLen);
1634+
nameLen = strlen(name);
1635+
thread->name = (char *)PR_Malloc(nameLen + 1);
16361636
if (!thread->name)
16371637
return PR_FAILURE;
1638-
memcpy(thread->name, name, nameLen);
1638+
memcpy(thread->name, name, nameLen + 1);
16391639

16401640
#if defined(OPENBSD) || defined(FREEBSD)
16411641
result = pthread_set_name_np(thread->id, name);
@@ -1657,9 +1657,16 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name)
16571657
return PR_SUCCESS;
16581658

16591659
#define SETNAME_LENGTH_CONSTRAINT 15
1660+
#define SETNAME_FRAGMENT1_LENGTH (SETNAME_LENGTH_CONSTRAINT >> 1)
1661+
#define SETNAME_FRAGMENT2_LENGTH \
1662+
(SETNAME_LENGTH_CONSTRAINT - SETNAME_FRAGMENT1_LENGTH - 1)
16601663
char name_dup[SETNAME_LENGTH_CONSTRAINT + 1];
1661-
if (nameLen > SETNAME_LENGTH_CONSTRAINT + 1) {
1662-
memcpy(name_dup, name, SETNAME_LENGTH_CONSTRAINT);
1664+
if (nameLen > SETNAME_LENGTH_CONSTRAINT) {
1665+
memcpy(name_dup, name, SETNAME_FRAGMENT1_LENGTH);
1666+
name_dup[SETNAME_FRAGMENT1_LENGTH] = '~';
1667+
memcpy(name_dup + SETNAME_FRAGMENT1_LENGTH + 1,
1668+
name + nameLen - SETNAME_FRAGMENT2_LENGTH,
1669+
SETNAME_FRAGMENT2_LENGTH);
16631670
name_dup[SETNAME_LENGTH_CONSTRAINT] = '\0';
16641671
name = name_dup;
16651672
}

nsprpub/pr/src/threads/combined/pruthr.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1597,11 +1597,11 @@ PR_IMPLEMENT(PRStatus) PR_SetCurrentThreadName(const char *name)
15971597
return PR_FAILURE;
15981598

15991599
PR_Free(thread->name);
1600-
nameLen = strlen(name) + 1;
1601-
thread->name = (char *)PR_Malloc(nameLen);
1600+
nameLen = strlen(name);
1601+
thread->name = (char *)PR_Malloc(nameLen + 1);
16021602
if (!thread->name)
16031603
return PR_FAILURE;
1604-
memcpy(thread->name, name, nameLen);
1604+
memcpy(thread->name, name, nameLen + 1);
16051605
_PR_MD_SET_CURRENT_THREAD_NAME(thread->name);
16061606
return PR_SUCCESS;
16071607
}

0 commit comments

Comments
 (0)