Skip to content

Commit 19a5974

Browse files
[ScanDependencies] Fix a memory leak in dependency graph
Fix a memory leak from #75134.
1 parent c1ea526 commit 19a5974

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

lib/DependencyScan/ScanDependencies.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -592,11 +592,9 @@ static void bridgeDependencyIDs(const ArrayRef<ModuleDependencyID> dependencies,
592592
static swiftscan_macro_dependency_set_t *createMacroDependencySet(
593593
const std::map<std::string, MacroPluginDependency> &macroDeps) {
594594
swiftscan_macro_dependency_set_t *set = new swiftscan_macro_dependency_set_t;
595-
if (macroDeps.empty()) {
596-
set->count = 0;
597-
set->macro_dependencies = nullptr;
598-
return set;
599-
}
595+
if (macroDeps.empty())
596+
return nullptr;
597+
600598
set->count = macroDeps.size();
601599
set->macro_dependencies = new swiftscan_macro_dependency_t[set->count];
602600
unsigned SI = 0;

tools/libSwiftScan/libSwiftScan.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,16 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DependencyScanningTool, swiftscan_scanner_t)
3131
//=== Private Cleanup Functions -------------------------------------------===//
3232
void swiftscan_macro_dependency_dispose(
3333
swiftscan_macro_dependency_set_t *macro) {
34+
if (macro == nullptr)
35+
return;
36+
3437
for (unsigned i = 0; i < macro->count; ++i) {
3538
swiftscan_string_dispose(macro->macro_dependencies[i]->moduleName);
3639
swiftscan_string_dispose(macro->macro_dependencies[i]->libraryPath);
3740
swiftscan_string_dispose(macro->macro_dependencies[i]->executablePath);
3841
delete macro->macro_dependencies[i];
3942
}
43+
delete[] macro->macro_dependencies;
4044
delete macro;
4145
}
4246

0 commit comments

Comments
 (0)