summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorDaniel Eiband <daniel.eiband@brainlab.com>2019-09-21 11:31:36 (GMT)
committerDaniel Eiband <daniel.eiband@brainlab.com>2019-09-21 11:31:36 (GMT)
commit8456f60dbc13b9fbd0490371c871a1e85a72c3a8 (patch)
treee1452ca079a7e1d8af1e22d23417223bf18eaae1 /Source
parentebb9346490741ddc2ce6f552bc1be57dfc730cfa (diff)
downloadCMake-8456f60dbc13b9fbd0490371c871a1e85a72c3a8.zip
CMake-8456f60dbc13b9fbd0490371c871a1e85a72c3a8.tar.gz
CMake-8456f60dbc13b9fbd0490371c871a1e85a72c3a8.tar.bz2
cmSourceFile: Remove non-const GetProperties accessor
Manipulating the property map of cmSourceFile directly may invalidate the class invariant of the cached value IsGenerated. Provide the setter SetProperties which also updates IsGenerated.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmCPluginAPI.cxx2
-rw-r--r--Source/cmSourceFile.cxx7
-rw-r--r--Source/cmSourceFile.h3
3 files changed, 10 insertions, 2 deletions
diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx
index 9c7beca..1eaf48b 100644
--- a/Source/cmCPluginAPI.cxx
+++ b/Source/cmCPluginAPI.cxx
@@ -561,7 +561,7 @@ void* CCONV cmAddSource(void* arg, void* arg2)
// Create the real cmSourceFile instance and copy over saved information.
cmSourceFile* rsf = mf->GetOrCreateSource(osf->FullPath);
- rsf->GetProperties() = osf->Properties;
+ rsf->SetProperties(osf->Properties);
for (std::string const& d : osf->Depends) {
rsf->AddDepend(d);
}
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
index 3344217..bd68d04 100644
--- a/Source/cmSourceFile.cxx
+++ b/Source/cmSourceFile.cxx
@@ -314,6 +314,13 @@ bool cmSourceFile::GetPropertyAsBool(const std::string& prop) const
return cmIsOn(this->GetProperty(prop));
}
+void cmSourceFile::SetProperties(cmPropertyMap properties)
+{
+ this->Properties = std::move(properties);
+
+ this->IsGenerated = this->GetPropertyAsBool(propGENERATED);
+}
+
cmCustomCommand* cmSourceFile::GetCustomCommand() const
{
return this->CustomCommand.get();
diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h
index ff465c7..3b18fdb 100644
--- a/Source/cmSourceFile.h
+++ b/Source/cmSourceFile.h
@@ -94,8 +94,9 @@ public:
void AddDepend(const std::string& d) { this->Depends.push_back(d); }
// Get the properties
- cmPropertyMap& GetProperties() { return this->Properties; }
const cmPropertyMap& GetProperties() const { return this->Properties; }
+ // Set the properties
+ void SetProperties(cmPropertyMap properties);
/**
* Check whether the given source file location could refer to this