summaryrefslogtreecommitdiffstats
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
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.
-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