Skip to content

Commit 767128b

Browse files
committed
Free duplicate enums rejected during parsing
Delete the temporary EnumDef in Parser::StartEnum() when duplicate-name registration fails so duplicate enum/union declarations do not leak during parsing.
1 parent 29f6b07 commit 767128b

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/idl_parser.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3126,8 +3126,10 @@ CheckedError Parser::StartEnum(const std::string& name, bool is_union,
31263126
enum_def.is_union = is_union;
31273127
enum_def.defined_namespace = current_namespace_;
31283128
const auto qualified_name = current_namespace_->GetFullyQualifiedName(name);
3129-
if (enums_.Add(qualified_name, &enum_def))
3129+
if (enums_.Add(qualified_name, &enum_def)) {
3130+
delete &enum_def;
31303131
return Error("enum already exists: " + qualified_name);
3132+
}
31313133
enum_def.underlying_type.base_type =
31323134
is_union ? BASE_TYPE_UTYPE : BASE_TYPE_INT;
31333135
enum_def.underlying_type.enum_def = &enum_def;

0 commit comments

Comments
 (0)