Browse Source

Fixed a possible memory leak with default arguments assigned by a constructor.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/600/head
Dimitar Dobrev 10 years ago
parent
commit
9645fa24a5
  1. 11
      src/CppParser/Parser.cpp

11
src/CppParser/Parser.cpp

@ -2666,8 +2666,6 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr) @@ -2666,8 +2666,6 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr)
case Stmt::CXXTemporaryObjectExprClass:
{
auto ConstructorExpr = cast<clang::CXXConstructExpr>(Expr);
auto ConstructorExpression = new AST::CXXConstructExpr(GetStringFromStatement(Expr),
WalkDeclaration(ConstructorExpr->getConstructor()));
if (ConstructorExpr->getNumArgs() == 1)
{
auto Arg = ConstructorExpr->getArg(0);
@ -2680,12 +2678,11 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr) @@ -2680,12 +2678,11 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr)
return WalkExpression(SubTemporaryExpr);
}
}
else
auto ConstructorExpression = new AST::CXXConstructExpr(GetStringFromStatement(Expr),
WalkDeclaration(ConstructorExpr->getConstructor()));
for (clang::Expr* arg : ConstructorExpr->arguments())
{
for (clang::Expr* arg : ConstructorExpr->arguments())
{
ConstructorExpression->Arguments.push_back(WalkExpression(arg));
}
ConstructorExpression->Arguments.push_back(WalkExpression(arg));
}
return ConstructorExpression;
}

Loading…
Cancel
Save