summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2003-10-30 22:17:51 +0000
committerbala <balanatarajan@users.noreply.github.com>2003-10-30 22:17:51 +0000
commitd2a8b0c0ee1be7e8d349c3d903df362981874944 (patch)
tree9e95d770704b0883852a9c21a4cfb9ce01570062
parentb47faf28b0ed4dbe0628e7f40d93d6fc2726050f (diff)
downloadATCD-d2a8b0c0ee1be7e8d349c3d903df362981874944.tar.gz
ChangeLogTag:Thu Oct 30 16:14:06 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r--ChangeLog9
-rw-r--r--ace/Thread_Manager.cpp17
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;