Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ee53319

Browse files
committed
[clang] Fix leak in LoadFromCommandLineWorkingDirectory unit test
Change `ASTUnit::LoadFromCommandLine` to return a `std::unique_ptr` instead of a +1 pointer, fixing a leak in the unit test `LoadFromCommandLineWorkingDirectory`.
1 parent f2bf133 commit ee53319

File tree

5 files changed

+9
-9
lines changed

5 files changed

+9
-9
lines changed

clang/include/clang/Frontend/ASTUnit.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,7 @@ class ASTUnit {
817817
///
818818
// FIXME: Move OnlyLocalDecls, UseBumpAllocator to setters on the ASTUnit, we
819819
// shouldn't need to specify them at construction time.
820-
static ASTUnit *LoadFromCommandLine(
820+
static std::unique_ptr<ASTUnit> LoadFromCommandLine(
821821
const char **ArgBegin, const char **ArgEnd,
822822
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
823823
IntrusiveRefCntPtr<DiagnosticsEngine> Diags, StringRef ResourceFilesPath,

clang/lib/CrossTU/CrossTranslationUnit.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -609,10 +609,10 @@ CrossTranslationUnitContext::ASTLoader::loadFromSource(
609609
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
610610
new DiagnosticsEngine{DiagID, &*DiagOpts, DiagClient});
611611

612-
return std::unique_ptr<ASTUnit>(ASTUnit::LoadFromCommandLine(
612+
return ASTUnit::LoadFromCommandLine(
613613
CommandLineArgs.begin(), (CommandLineArgs.end()),
614614
CI.getPCHContainerOperations(), Diags,
615-
CI.getHeaderSearchOpts().ResourceDir));
615+
CI.getHeaderSearchOpts().ResourceDir);
616616
}
617617

618618
llvm::Expected<InvocationListTy>

clang/lib/Frontend/ASTUnit.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1737,7 +1737,7 @@ std::unique_ptr<ASTUnit> ASTUnit::LoadFromCompilerInvocation(
17371737
return AST;
17381738
}
17391739

1740-
ASTUnit *ASTUnit::LoadFromCommandLine(
1740+
std::unique_ptr<ASTUnit> ASTUnit::LoadFromCommandLine(
17411741
const char **ArgBegin, const char **ArgEnd,
17421742
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
17431743
IntrusiveRefCntPtr<DiagnosticsEngine> Diags, StringRef ResourceFilesPath,
@@ -1841,7 +1841,7 @@ ASTUnit *ASTUnit::LoadFromCommandLine(
18411841
return nullptr;
18421842
}
18431843

1844-
return AST.release();
1844+
return AST;
18451845
}
18461846

18471847
bool ASTUnit::Reparse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,

clang/tools/libclang/CIndex.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -3872,7 +3872,7 @@ clang_parseTranslationUnit_Impl(CXIndex CIdx, const char *source_filename,
38723872
*CXXIdx, source_filename,
38733873
LibclangInvocationReporter::OperationKind::ParseOperation, options,
38743874
llvm::makeArrayRef(*Args), /*InvocationArgs=*/None, unsaved_files);
3875-
std::unique_ptr<ASTUnit> Unit(ASTUnit::LoadFromCommandLine(
3875+
std::unique_ptr<ASTUnit> Unit = ASTUnit::LoadFromCommandLine(
38763876
Args->data(), Args->data() + Args->size(),
38773877
CXXIdx->getPCHContainerOperations(), Diags,
38783878
CXXIdx->getClangResourcesPath(), CXXIdx->getOnlyLocalDecls(),
@@ -3882,7 +3882,7 @@ clang_parseTranslationUnit_Impl(CXIndex CIdx, const char *source_filename,
38823882
/*AllowPCHWithCompilerErrors=*/true, SkipFunctionBodies, SingleFileParse,
38833883
/*UserFilesAreVolatile=*/true, ForSerialization, RetainExcludedCB,
38843884
CXXIdx->getPCHContainerOperations()->getRawReader().getFormat(),
3885-
&ErrUnit));
3885+
&ErrUnit);
38863886

38873887
// Early failures in LoadFromCommandLine may return with ErrUnit unset.
38883888
if (!Unit && !ErrUnit)

clang/unittests/Frontend/ASTUnitTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ TEST_F(ASTUnitTest, LoadFromCommandLineEarlyError) {
166166
auto PCHContainerOps = std::make_shared<PCHContainerOperations>();
167167
std::unique_ptr<clang::ASTUnit> ErrUnit;
168168

169-
ASTUnit *AST = ASTUnit::LoadFromCommandLine(
169+
std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromCommandLine(
170170
&Args[0], &Args[4], PCHContainerOps, Diags, "", false,
171171
CaptureDiagsKind::All, None, true, 0, TU_Complete, false, false, false,
172172
SkipFunctionBodiesScope::None, false, true, false, false, None, &ErrUnit,
@@ -193,7 +193,7 @@ TEST_F(ASTUnitTest, LoadFromCommandLineWorkingDirectory) {
193193
auto PCHContainerOps = std::make_shared<PCHContainerOperations>();
194194
std::unique_ptr<clang::ASTUnit> ErrUnit;
195195

196-
auto *AST = ASTUnit::LoadFromCommandLine(
196+
std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromCommandLine(
197197
&Args[0], &Args[4], PCHContainerOps, Diags, "", false,
198198
CaptureDiagsKind::All, None, true, 0, TU_Complete, false, false, false,
199199
SkipFunctionBodiesScope::None, false, true, false, false, None, &ErrUnit,

0 commit comments

Comments
 (0)