diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2023-11-29 02:10:38 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2023-11-29 13:34:21 (GMT) |
commit | d01120a47a53fbe4bab1b1c313036f956dbf77d9 (patch) | |
tree | bbfd5d309d9df7c58d6f83d801034f96653cd141 /Source/cmGlobalGenerator.cxx | |
parent | 01deb5809854b1ce1fdaa8fd8e31adf31a134904 (diff) | |
download | CMake-d01120a47a53fbe4bab1b1c313036f956dbf77d9.zip CMake-d01120a47a53fbe4bab1b1c313036f956dbf77d9.tar.gz CMake-d01120a47a53fbe4bab1b1c313036f956dbf77d9.tar.bz2 |
cmGlobalGenerator: clear RuntimeDependencySet members at configure
Commit f2617cf8e6 (Source: Add cmInstallRuntimeDependencySet,
2021-05-19) introduced via !6186 to 3.21 added storage to the global
generator for runtime dependency sets. However, this was not cleared at
the start of configure in the `ClearGeneratorMembers()` method. When
using `ccmake` to configure (and, presumably `cmake-gui` too), projects
using `install(TARGETS … RUNTIME_DEPENDENCY_SET)` would use dependency
set tracking instances from previous configure runs that held references
to targets free'd with the `cmMakefile` instance that held them.
Clear the dependency sets at the beginning of configure so that they are
not remembered and trigger via use-after-free bugs when used.
Fixes: #25446
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bec389f..c2b972d 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1999,6 +1999,8 @@ void cmGlobalGenerator::ClearGeneratorMembers() this->DirectoryContentMap.clear(); this->BinaryDirectories.clear(); this->GeneratedFiles.clear(); + this->RuntimeDependencySets.clear(); + this->RuntimeDependencySetsByName.clear(); } void cmGlobalGenerator::ComputeTargetObjectDirectory( |