summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgokhale <asgokhale@users.noreply.github.com>1999-03-12 15:44:58 +0000
committergokhale <asgokhale@users.noreply.github.com>1999-03-12 15:44:58 +0000
commit82bf1eba60d2d5d48407ff575ef9eafca1aa5c76 (patch)
tree1c912837e3df8679a3a7437fe643483717e33a5e
parentc9b7932f848cb4a54a8c14fa8ccb58a4b85cf468 (diff)
downloadATCD-82bf1eba60d2d5d48407ff575ef9eafca1aa5c76.tar.gz
*** empty log message ***
-rw-r--r--TAO/ChangeLog-99c19
-rw-r--r--TAO/tao/CDR_Interpreter.cpp1
-rw-r--r--TAO/tao/decode.cpp4
-rw-r--r--TAO/tao/deep_free.cpp4
-rw-r--r--TAO/tao/encode.cpp4
5 files changed, 26 insertions, 6 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c
index 7cfd3c2542b..79f99c0a14c 100644
--- a/TAO/ChangeLog-99c
+++ b/TAO/ChangeLog-99c
@@ -1,3 +1,22 @@
+Fri Mar 12 10:38:18 EST 1999 Aniruddha Gokhale <gokhale@sahyadri.research.bell-labs.com>
+
+ * tao/CDR_Interpreter.cpp:
+
+ setup_entry for objrect references required
+ TAO_Object_Field_T<CORBA_Object> as the first parameter instead
+ of CORBA_OBject_ptr for the accurate size computation. Thanks to
+ Alexey Gadzhiev (alg@null.ru) for reporting the bug and
+ supplying us with a test program and other information to help
+ us fix the bug.
+
+ * tao/{encode, decode, deep_free}.cpp:
+
+ In encode/decode/deep_free for structures, for the case where we
+ are dealing with fields that are object references, we cast the
+ data to TAO_Object_Field_T<CORBA_Object>* instead of simply
+ TAO_Object_Field*. These changes were made during the bug fix
+ described aove.
+
Fri Mar 12 00:35:47 1999 Marina Spivak <marina@cs.wustl.edu>
* orbsvcs/orbsvcs/IOR_Multicast.cpp
diff --git a/TAO/tao/CDR_Interpreter.cpp b/TAO/tao/CDR_Interpreter.cpp
index 32f62c7b42b..56e7d3b8812 100644
--- a/TAO/tao/CDR_Interpreter.cpp
+++ b/TAO/tao/CDR_Interpreter.cpp
@@ -211,6 +211,7 @@ TAO_CDR_Interpreter::init (void)
setup_entry (CORBA::TypeCode_ptr, tk_TypeCode);
setup_entry (CORBA::Principal_ptr, tk_Principal);
setup_entry (CORBA::Object_ptr, tk_objref);
+ setup_entry (TAO_Object_Field_T<CORBA_Object>, tk_objref);
enum generic_enum {a, b, c, d};
diff --git a/TAO/tao/decode.cpp b/TAO/tao/decode.cpp
index 2261aecdfe7..63534f74661 100644
--- a/TAO/tao/decode.cpp
+++ b/TAO/tao/decode.cpp
@@ -708,8 +708,8 @@ TAO_Marshal_Struct::decode (CORBA::TypeCode_ptr tc,
{
if (is_corba_object == 0)
{
- TAO_Object_Field* field =
- ACE_reinterpret_cast (TAO_Object_Field *,
+ TAO_Object_Field_T<CORBA_Object>* field =
+ ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *,
ACE_const_cast (void *, data));
field->_downcast (object, env);
// The size of this field is different...
diff --git a/TAO/tao/deep_free.cpp b/TAO/tao/deep_free.cpp
index b858f102c09..d20cb717ab4 100644
--- a/TAO/tao/deep_free.cpp
+++ b/TAO/tao/deep_free.cpp
@@ -226,8 +226,8 @@ TAO_Marshal_Struct::deep_free (CORBA::TypeCode_ptr tc,
case CORBA::tk_objref:
{
- TAO_Object_Field* field =
- ACE_reinterpret_cast (TAO_Object_Field *,
+ TAO_Object_Field_T<CORBA_Object>* field =
+ ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *,
ACE_const_cast (void *, source));
field->_release ();
retval = CORBA::TypeCode::TRAVERSE_CONTINUE;
diff --git a/TAO/tao/encode.cpp b/TAO/tao/encode.cpp
index 7125d122ce4..a3030139014 100644
--- a/TAO/tao/encode.cpp
+++ b/TAO/tao/encode.cpp
@@ -375,8 +375,8 @@ TAO_Marshal_Struct::encode (CORBA::TypeCode_ptr tc,
CORBA_Object_ptr ptr = 0;
if (is_corba_object == 0)
{
- TAO_Object_Field* field =
- ACE_reinterpret_cast (TAO_Object_Field *,
+ TAO_Object_Field_T<CORBA_Object>* field =
+ ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *,
ACE_const_cast (void *, data));
ptr = field->_upcast ();
// The size of this field is different...