summaryrefslogtreecommitdiff
path: root/TAO/tao/PI/PICurrent_Impl.cpp
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2006-02-15 11:42:16 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2006-02-15 11:42:16 +0000
commitd162dcd27dafe00430c745463ccdabc2313178d0 (patch)
treec7fbd4b677fce7abfd9ec503c0276f81edfa07e3 /TAO/tao/PI/PICurrent_Impl.cpp
parentf48593ae1385ede56b4d2ca5dc23e0a0836c34bb (diff)
downloadATCD-d162dcd27dafe00430c745463ccdabc2313178d0.tar.gz
ChangeLogTag: Wed Feb 16 11:40:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO/tao/PI/PICurrent_Impl.cpp')
-rw-r--r--TAO/tao/PI/PICurrent_Impl.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/TAO/tao/PI/PICurrent_Impl.cpp b/TAO/tao/PI/PICurrent_Impl.cpp
index b8696087feb..b200b50a089 100644
--- a/TAO/tao/PI/PICurrent_Impl.cpp
+++ b/TAO/tao/PI/PICurrent_Impl.cpp
@@ -94,10 +94,21 @@ TAO::PICurrent_Impl::set_slot (PortableInterceptor::SlotId identifier,
// method is invoked.
// Perform deep copy of the logically copied slot table, if
- // necessary, before modifying our own slot table.
+ // necessary, before modifying our own slot table. This is a setup
+ // where another PICurrent refers to our slot table, so we force the
+ // the other PICurrent does copy our table before making changes to
+ // our table.
if (this->copy_callback_ != 0)
this->copy_callback_->execute ();
+ // If we have a logical copied slot table we refer to, just make a
+ // copy of that table first before making changes to our table.
+ if (this->lc_slot_table_ != 0)
+ {
+ this->slot_table_ = *this->lc_slot_table_;
+ this->lc_slot_table_ = 0;
+ }
+
// If the slot table array isn't large enough, then increase its
// size. We're guaranteed not to exceed the number of allocated
// slots for the reason stated above.