diff options
author | vasiljevic <zv@archiware.com> | 2004-08-10 19:35:35 (GMT) |
---|---|---|
committer | vasiljevic <zv@archiware.com> | 2004-08-10 19:35:35 (GMT) |
commit | 8b645aed8f5bf864e5e9244d9784a7536a932c02 (patch) | |
tree | 0f393be1f725a90d8c0f8ec371ad36f3ea629b38 /unix | |
parent | 860089c25c029c50adc81eccf46e6978648bac42 (diff) | |
download | tcl-8b645aed8f5bf864e5e9244d9784a7536a932c02.zip tcl-8b645aed8f5bf864e5e9244d9784a7536a932c02.tar.gz tcl-8b645aed8f5bf864e5e9244d9784a7536a932c02.tar.bz2 |
Changed handling of the returned thread ID since broken on 64-bit
systems (Cray). Thanks to Rob Ratcliff for reporting the bug.
Diffstat (limited to 'unix')
-rw-r--r-- | unix/tclUnixThrd.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index edfc44a..738808a 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -91,6 +91,7 @@ TclpThreadCreate(idPtr, proc, clientData, stackSize, flags) { #ifdef TCL_THREADS pthread_attr_t attr; + pthread_t theThread; int result; pthread_attr_init(&attr); @@ -126,12 +127,13 @@ TclpThreadCreate(idPtr, proc, clientData, stackSize, flags) } - if (pthread_create((pthread_t *)idPtr, &attr, + if (pthread_create(&theThread, &attr, (void * (*)())proc, (void *)clientData) && - pthread_create((pthread_t *)idPtr, NULL, + pthread_create(&theThread, NULL, (void * (*)())proc, (void *)clientData)) { result = TCL_ERROR; } else { + *idPtr = (Tcl_ThreadId)theThread; result = TCL_OK; } pthread_attr_destroy(&attr); |