diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-10-30 22:17:51 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-10-30 22:17:51 +0000 |
commit | d2a8b0c0ee1be7e8d349c3d903df362981874944 (patch) | |
tree | 9e95d770704b0883852a9c21a4cfb9ce01570062 | |
parent | b47faf28b0ed4dbe0628e7f40d93d6fc2726050f (diff) | |
download | ATCD-d2a8b0c0ee1be7e8d349c3d903df362981874944.tar.gz |
ChangeLogTag:Thu Oct 30 16:14:06 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | ace/Thread_Manager.cpp | 17 |
2 files changed, 18 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index aa2e767f645..dabeb49fb6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Thu Oct 30 16:14:06 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * ace/Thread_Manager.cpp (spawn_i): + + Fixed ACE_Thread_Manager problem on VxWorks where thread id + could be corrupted by taking address of a temporary + variable. Thank to Dennis Noll, and Brian Mendel for tracking + this down. + Thu Oct 30 11:57:36 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> * bin/tao_orb_tests.lst: Added a couple of Portable_Interceptor diff --git a/ace/Thread_Manager.cpp b/ace/Thread_Manager.cpp index b24462ec3b9..b894ff36af3 100644 --- a/ace/Thread_Manager.cpp +++ b/ace/Thread_Manager.cpp @@ -588,15 +588,16 @@ ACE_Thread_Manager::spawn_i (ACE_THR_FUNC func, // point to the task name in the TCB in ACE_OS::thr_create (). if (t_id == 0) { - char *thr_id; - ACE_NEW_RETURN (thr_id, - char[16], + ACE_NEW_RETURN (t_id, + char*, -1); - // Mark the thread ID to show that the ACE_Thread_Manager - // allocated it. - thr_id[0] = ACE_THR_ID_ALLOCATED; - thr_id[1] = '\0'; - t_id = &thr_id; + ACE_NEW_RETURN (*t_id, + char[16], + -1); + // Mark the thread ID to show that the ACE_Thread_Manager + // allocated it. + (*t_id)[0] = ACE_THR_ID_ALLOCATED; + (*t_id)[1] = '\0'; } #else /* ! VXWORKS */ ACE_thread_t thr_id; |