diff --git a/TAO/tao/AnyTypeCode/TypeCode_CDR_Extraction.cpp b/TAO/tao/AnyTypeCode/TypeCode_CDR_Extraction.cpp index 3b8c011094741..6cca984782f49 100644 --- a/TAO/tao/AnyTypeCode/TypeCode_CDR_Extraction.cpp +++ b/TAO/tao/AnyTypeCode/TypeCode_CDR_Extraction.cpp @@ -1392,6 +1392,7 @@ namespace // Only struct, union, event and valuetype TypeCodes may be // recursive. However non-recursive ALIAS may be indirected. || !(kind == CORBA::tk_struct + || kind == CORBA::tk_sequence || kind == CORBA::tk_union || kind == CORBA::tk_value || kind == CORBA::tk_event @@ -1400,6 +1401,15 @@ namespace return false; } + if (CORBA::tk_sequence == kind || CORBA::tk_array == kind) // @todo 1. check if recursion is properly handled 2. check need for other complex types + { + return TAO::TypeCodeFactory::tc_sequence_factory (static_cast (kind), + indir_stream, + tc, + indirect_infos, + direct_infos); + } + // Currently all recursive TypeCodes have complex parameter // lists, meaning they are encoded as CDR encapsulations. TAO_InputCDRByteOrderGuard boguard (indir_stream);