diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-04-04 18:16:04 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-04-04 18:16:04 +0000 |
commit | 094168e375fb4164cc91ae0ff3aa1267b2844686 (patch) | |
tree | fe2708940e6bf3b08461f87ef524ec56d9ae5c6a /TAO/tao/skip.cpp | |
parent | 93c86c050d0fd73b90d176e2bf463e560fa75f72 (diff) | |
download | ATCD-094168e375fb4164cc91ae0ff3aa1267b2844686.tar.gz |
ChangeLogTag: Fri Apr 4 12:06:34 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
Diffstat (limited to 'TAO/tao/skip.cpp')
-rw-r--r-- | TAO/tao/skip.cpp | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/TAO/tao/skip.cpp b/TAO/tao/skip.cpp index 1907dfdc9d4..d66e3a71bfd 100644 --- a/TAO/tao/skip.cpp +++ b/TAO/tao/skip.cpp @@ -26,7 +26,9 @@ #include "tao/ValueBase.h" #include "tao/debug.h" -ACE_RCSID(tao, skip, "$Id$") +ACE_RCSID (tao, + + skip, "$Id$") CORBA::TypeCode::traverse_status TAO_Marshal_Primitive::skip (CORBA::TypeCode_ptr tc, @@ -487,12 +489,36 @@ TAO_Marshal_Union::skip (CORBA::TypeCode_ptr tc, case CORBA::tk_enum: { - const CORBA::ULong *d = - ACE_reinterpret_cast (const CORBA::ULong *, - any->value ()); - if (*d == enum_v) + ACE_Message_Block *mb = any->_tao_get_cdr (); + + if (mb != 0) + { + CORBA::ULong d; + TAO_InputCDR cdr (mb->data_block (), + ACE_Message_Block::DONT_DELETE, + mb->rd_ptr () - mb->base (), + mb->wr_ptr () - mb->base (), + ACE_CDR_BYTE_ORDER, + TAO_DEF_GIOP_MAJOR, + TAO_DEF_GIOP_MINOR); + + cdr.read_ulong (d); + + if (d == enum_v) + { + current_member = i; + } + } + else { - current_member = i; + const CORBA::ULong *d = + ACE_reinterpret_cast (const CORBA::ULong *, + any->value ()); + + if (*d == enum_v) + { + current_member = i; + } } } break; |