Skip to content

Commit ca1d627

Browse files
starseekercshorler
authored andcommitted
If we need to allocate an EntityNode, clean it up.
1 parent a6bea35 commit ca1d627

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

src/clstepcore/STEPaggrEntity.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ Severity EntityAggregate::ReadValue( istream & in, ErrorDescriptor * err,
2424
char errmsg[BUFSIZ+1];
2525
int value_cnt = 0;
2626
std::string buf;
27+
bool free_item = false;
2728

2829
if( assignVal ) {
2930
Empty(); // read new values and discard existing ones
@@ -67,6 +68,7 @@ Severity EntityAggregate::ReadValue( istream & in, ErrorDescriptor * err,
6768
// It is used to read the values
6869
else if( !assignVal ) {
6970
item = new EntityNode();
71+
free_item = true;
7072
}
7173

7274
while( in.good() && ( c != ')' ) ) {
@@ -114,8 +116,12 @@ Severity EntityAggregate::ReadValue( istream & in, ErrorDescriptor * err,
114116
} else { // expectation for end paren delim has not been met
115117
err->GreaterSeverity( SEVERITY_INPUT_ERROR );
116118
err->AppendToUserMsg( "Missing close paren for aggregate value" );
119+
if (free_item)
120+
delete item;
117121
return SEVERITY_INPUT_ERROR;
118122
}
123+
if (free_item)
124+
delete item;
119125
return err->severity();
120126
}
121127

0 commit comments

Comments
 (0)