summaryrefslogtreecommitdiff
path: root/TAO/tao/skip.cpp
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-04-04 18:16:04 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-04-04 18:16:04 +0000
commit094168e375fb4164cc91ae0ff3aa1267b2844686 (patch)
treefe2708940e6bf3b08461f87ef524ec56d9ae5c6a /TAO/tao/skip.cpp
parent93c86c050d0fd73b90d176e2bf463e560fa75f72 (diff)
downloadATCD-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.cpp38
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;