Skip to content

Commit 54e211b

Browse files
committed
Refs #22484: Fix
Signed-off-by: Mario Dominguez <[email protected]>
1 parent 0feca2c commit 54e211b

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

src/cpp/xmlparser/XMLDynamicParser.cpp

+37-5
Original file line numberDiff line numberDiff line change
@@ -1309,14 +1309,46 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
13091309

13101310
if (!isArray)
13111311
{
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+
}
13131324
}
13141325
else
13151326
{
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+
}
13201352
}
13211353
}
13221354
else if (p_root->Attribute(MAP_MAXLENGTH) != nullptr)

0 commit comments

Comments
 (0)