diff options
author | gokhale <asgokhale@users.noreply.github.com> | 1999-03-12 15:44:58 +0000 |
---|---|---|
committer | gokhale <asgokhale@users.noreply.github.com> | 1999-03-12 15:44:58 +0000 |
commit | 82bf1eba60d2d5d48407ff575ef9eafca1aa5c76 (patch) | |
tree | 1c912837e3df8679a3a7437fe643483717e33a5e | |
parent | c9b7932f848cb4a54a8c14fa8ccb58a4b85cf468 (diff) | |
download | ATCD-82bf1eba60d2d5d48407ff575ef9eafca1aa5c76.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/ChangeLog-99c | 19 | ||||
-rw-r--r-- | TAO/tao/CDR_Interpreter.cpp | 1 | ||||
-rw-r--r-- | TAO/tao/decode.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/deep_free.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/encode.cpp | 4 |
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... |