summaryrefslogtreecommitdiff
path: root/TAO/tao/AnyTypeCode/skip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/AnyTypeCode/skip.cpp')
-rw-r--r--TAO/tao/AnyTypeCode/skip.cpp47
1 files changed, 25 insertions, 22 deletions
diff --git a/TAO/tao/AnyTypeCode/skip.cpp b/TAO/tao/AnyTypeCode/skip.cpp
index 0741c2e62d5..f724a6fa75a 100644
--- a/TAO/tao/AnyTypeCode/skip.cpp
+++ b/TAO/tao/AnyTypeCode/skip.cpp
@@ -1,4 +1,3 @@
-
//=============================================================================
/**
* @file skip.cpp
@@ -851,7 +850,6 @@ TAO::traverse_status
TAO_Marshal_Value::skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *stream)
{
TAO::traverse_status retval = TAO::TRAVERSE_CONTINUE;
- CORBA::TypeCode_var param;
// Use the same method to skip over our base valuetype.
// To achive this we'll need to distinguish between
@@ -932,32 +930,37 @@ TAO_Marshal_Value::skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *stream)
}
- // Handle our base valuetype if any.
- param = tc->concrete_base_type ();
-
- CORBA::TCKind const k = param->kind ();
+ CORBA::TypeCode_var param;
- if (k != CORBA::tk_null)
+ if (CORBA::tk_value_box == tc->kind ())
{
- retval = this->skip (param.in (), stream);
-
- if (retval != TAO::TRAVERSE_CONTINUE)
+ param = tc->content_type ();
+ retval = TAO_Marshal_Object::perform_skip (param.in (), stream);
+ }
+ else // tc->kind () must be tk_value or tk_event
+ {
+ // Handle our base valuetype if any.
+ param = tc->concrete_base_type ();
+ if (CORBA::tk_null != param->kind ())
{
- return retval;
+ retval = this->skip (param.in (), stream);
}
- }
- // Number of fields in the valuetype.
- CORBA::ULong const member_count =
- tc->member_count ();
-
- for (CORBA::ULong i = 0;
- i < member_count && retval == TAO::TRAVERSE_CONTINUE;
- ++i)
- {
- param = tc->member_type (i);
+ if (retval == TAO::TRAVERSE_CONTINUE)
+ {
+ // Number of fields in the valuetype.
+ CORBA::ULong const member_count =
+ tc->member_count ();
- retval = TAO_Marshal_Object::perform_skip (param.in (), stream);
+ for (CORBA::ULong i = 0;
+ i < member_count && retval == TAO::TRAVERSE_CONTINUE;
+ ++i)
+ {
+ param = tc->member_type (i);
+ retval = TAO_Marshal_Object::perform_skip (
+ param.in (), stream);
+ }
+ }
}
if (retval == TAO::TRAVERSE_CONTINUE)