summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-13 04:17:22 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-13 04:17:22 +0000
commit70db4de69fdb5d9db0b6879c9f546094a2e2a6d8 (patch)
tree22ce0606b84cbc32ce0da9d6fb6b1a7163fd9e69
parentb5fe388c71243e393bbe2aba9639e5436dfcbe9d (diff)
downloadATCD-70db4de69fdb5d9db0b6879c9f546094a2e2a6d8.tar.gz
Fixed mis-generated collocated class names bug in case of multiple inheritance.
-rw-r--r--TAO/TAO_IDL/be/be_interface.cpp7
-rw-r--r--TAO/TAO_IDL/be_include/be_interface.h3
2 files changed, 6 insertions, 4 deletions
diff --git a/TAO/TAO_IDL/be/be_interface.cpp b/TAO/TAO_IDL/be/be_interface.cpp
index 37860f537b5..3636414d0cd 100644
--- a/TAO/TAO_IDL/be/be_interface.cpp
+++ b/TAO/TAO_IDL/be/be_interface.cpp
@@ -36,6 +36,7 @@ be_interface::be_interface (void)
ami_handler_full_skel_name_ (0),
skel_count_ (0),
full_coll_name_ (0),
+ cached_coll_name_type_ (-1),
ami_handler_full_coll_name_ (0),
local_coll_name_ (0),
ami_handler_local_coll_name_ (0),
@@ -107,13 +108,11 @@ be_interface::~be_interface (void)
void
be_interface::compute_coll_name (int type)
{
-// @@ not thread safe.
- static int cached_type = -1;
- if (type == cached_type && this->full_coll_name_ != 0)
+ if (type == this->cached_coll_name_type_ && this->full_coll_name_ != 0)
return;
else
{
- cached_type = type;
+ this->cached_coll_name_type_ = type;
delete this->full_coll_name_;
delete this->local_coll_name_;
}
diff --git a/TAO/TAO_IDL/be_include/be_interface.h b/TAO/TAO_IDL/be_include/be_interface.h
index e47fece8262..22d469ef9af 100644
--- a/TAO/TAO_IDL/be_include/be_interface.h
+++ b/TAO/TAO_IDL/be_include/be_interface.h
@@ -261,6 +261,9 @@ private:
char *full_coll_name_;
// Full collocated name
+ int cached_coll_name_type_;
+ // Record the type of cached collocated class prefix.
+
char *ami_handler_full_coll_name_;
// Full collocated name of the AMI handler