Looks like there was another leak I missed. I'm working on fixing it now. Cheers, Alex
On Tue, 8 Jan 2019 at 14:38, Alex L <arpha...@gmail.com> wrote: > Thanks for reverting the commit! Unfortunately I missed the failure back > then. > I fixed the leak and recommitted the change in r350666. > > Cheers, > Alex > > On Tue, 10 Jul 2018 at 12:53, Evgeniy Stepanov via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: eugenis >> Date: Tue Jul 10 12:49:07 2018 >> New Revision: 336716 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=336716&view=rev >> Log: >> Revert r336590 "[libclang] evalute compound statement cursors before >> trying to evaluate" >> >> New memory leaks in >> LibclangParseTest_EvaluateChildExpression_Test::TestBody() >> >> Modified: >> cfe/trunk/tools/libclang/CIndex.cpp >> cfe/trunk/unittests/libclang/LibclangTest.cpp >> >> Modified: cfe/trunk/tools/libclang/CIndex.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=336716&r1=336715&r2=336716&view=diff >> >> ============================================================================== >> --- cfe/trunk/tools/libclang/CIndex.cpp (original) >> +++ cfe/trunk/tools/libclang/CIndex.cpp Tue Jul 10 12:49:07 2018 >> @@ -3890,19 +3890,6 @@ static const ExprEvalResult* evaluateExp >> } >> >> CXEvalResult clang_Cursor_Evaluate(CXCursor C) { >> - if (clang_getCursorKind(C) == CXCursor_CompoundStmt) { >> - const CompoundStmt *compoundStmt = >> cast<CompoundStmt>(getCursorStmt(C)); >> - Expr *expr = nullptr; >> - for (auto *bodyIterator : compoundStmt->body()) { >> - if ((expr = dyn_cast<Expr>(bodyIterator))) { >> - break; >> - } >> - } >> - if (expr) >> - return const_cast<CXEvalResult>( >> - reinterpret_cast<const void *>(evaluateExpr(expr, C))); >> - } >> - >> const Decl *D = getCursorDecl(C); >> if (D) { >> const Expr *expr = nullptr; >> @@ -3916,6 +3903,19 @@ CXEvalResult clang_Cursor_Evaluate(CXCur >> evaluateExpr(const_cast<Expr *>(expr), C))); >> return nullptr; >> } >> + >> + const CompoundStmt *compoundStmt = >> dyn_cast_or_null<CompoundStmt>(getCursorStmt(C)); >> + if (compoundStmt) { >> + Expr *expr = nullptr; >> + for (auto *bodyIterator : compoundStmt->body()) { >> + if ((expr = dyn_cast<Expr>(bodyIterator))) { >> + break; >> + } >> + } >> + if (expr) >> + return const_cast<CXEvalResult>( >> + reinterpret_cast<const void *>(evaluateExpr(expr, C))); >> + } >> return nullptr; >> } >> >> >> Modified: cfe/trunk/unittests/libclang/LibclangTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/LibclangTest.cpp?rev=336716&r1=336715&r2=336716&view=diff >> >> ============================================================================== >> --- cfe/trunk/unittests/libclang/LibclangTest.cpp (original) >> +++ cfe/trunk/unittests/libclang/LibclangTest.cpp Tue Jul 10 12:49:07 2018 >> @@ -461,47 +461,6 @@ TEST_F(LibclangParseTest, AllSkippedRang >> clang_disposeSourceRangeList(Ranges); >> } >> >> -TEST_F(LibclangParseTest, EvaluateChildExpression) { >> - std::string Main = "main.m"; >> - WriteFile(Main, "#define kFOO @\"foo\"\n" >> - "void foobar(void) {\n" >> - " {kFOO;}\n" >> - "}\n"); >> - ClangTU = clang_parseTranslationUnit(Index, Main.c_str(), nullptr, 0, >> nullptr, >> - 0, TUFlags); >> - >> - CXCursor C = clang_getTranslationUnitCursor(ClangTU); >> - clang_visitChildren( >> - C, >> - [](CXCursor cursor, CXCursor parent, >> - CXClientData client_data) -> CXChildVisitResult { >> - if (clang_getCursorKind(cursor) == CXCursor_FunctionDecl) { >> - int numberedStmt = 0; >> - clang_visitChildren( >> - cursor, >> - [](CXCursor cursor, CXCursor parent, >> - CXClientData client_data) -> CXChildVisitResult { >> - int &numberedStmt = *((int *)client_data); >> - if (clang_getCursorKind(cursor) == >> CXCursor_CompoundStmt) { >> - if (numberedStmt) { >> - CXEvalResult RE = clang_Cursor_Evaluate(cursor); >> - EXPECT_NE(RE, nullptr); >> - EXPECT_EQ(clang_EvalResult_getKind(RE), >> - CXEval_ObjCStrLiteral); >> - return CXChildVisit_Break; >> - } >> - numberedStmt++; >> - } >> - return CXChildVisit_Recurse; >> - }, >> - &numberedStmt); >> - EXPECT_EQ(numberedStmt, 1); >> - } >> - return CXChildVisit_Continue; >> - }, >> - nullptr); >> -} >> - >> class LibclangReparseTest : public LibclangParseTest { >> public: >> void DisplayDiagnostics() { >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits