@@ -1309,14 +1309,46 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1309
1309
1310
1310
if (!isArray)
1311
1311
{
1312
- member = factory->create_sequence_type (content_type, length)->build ();
1312
+ DynamicTypeBuilder::_ref_type inner_builder{factory->create_sequence_type (content_type, length)};
1313
+ if (nullptr != inner_builder)
1314
+ {
1315
+ member = inner_builder->build ();
1316
+ }
1317
+ else
1318
+ {
1319
+ EPROSIMA_LOG_ERROR (XMLPARSER,
1320
+ " Error parsing sequence element type: Cannot recognize inner content of member: " <<
1321
+ memberType);
1322
+ return {};
1323
+ }
1313
1324
}
1314
1325
else
1315
1326
{
1316
- DynamicTypeBuilder::_ref_type inner_builder {factory->create_sequence_type (content_type, length)};
1317
- std::vector<uint32_t > bounds;
1318
- dimensionsToArrayBounds (memberArray, bounds);
1319
- member = factory->create_array_type (inner_builder->build (), bounds)->build ();
1327
+ DynamicTypeBuilder::_ref_type inner_builder{factory->create_sequence_type (content_type, length)};
1328
+ if (nullptr != inner_builder)
1329
+ {
1330
+ std::vector<uint32_t > bounds;
1331
+ dimensionsToArrayBounds (memberArray, bounds);
1332
+ DynamicTypeBuilder::_ref_type sub_builder{factory->create_array_type (inner_builder->build (), bounds)};
1333
+ if (nullptr != sub_builder)
1334
+ {
1335
+ member = sub_builder->build ();
1336
+ }
1337
+ else
1338
+ {
1339
+ EPROSIMA_LOG_ERROR (XMLPARSER,
1340
+ " Error parsing sequence element type: Cannot recognize inner content of member: " <<
1341
+ memberType);
1342
+ return {};
1343
+ }
1344
+ }
1345
+ else
1346
+ {
1347
+ EPROSIMA_LOG_ERROR (XMLPARSER,
1348
+ " Error parsing sequence element type: Cannot recognize inner content of member: " <<
1349
+ memberType);
1350
+ return {};
1351
+ }
1320
1352
}
1321
1353
}
1322
1354
else if (p_root->Attribute (MAP_MAXLENGTH) != nullptr )
0 commit comments