diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index 591a2cd81..7da334ef1 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -115,7 +115,9 @@ void CCONV cmAddCacheDefinition(void *arg, const char* name, const char* CCONV cmGetProjectName(void *arg) { cmMakefile *mf = static_cast(arg); - return mf->GetProjectName(); + static std::string name; + name = mf->GetProjectName(); + return name.c_str(); } const char* CCONV cmGetHomeDirectory(void *arg) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 73911a591..abdd76762 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2044,12 +2044,12 @@ void cmMakefile::RemoveCacheDefinition(const std::string& name) this->GetState()->RemoveCacheEntry(name); } -void cmMakefile::SetProjectName(const char* p) +void cmMakefile::SetProjectName(std::string const& p) { this->ProjectName = p; } -const char* cmMakefile::GetProjectName() const +std::string cmMakefile::GetProjectName() const { return this->ProjectName.c_str(); } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 959f0e74f..dfd3e196d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -274,12 +274,12 @@ public: /** * Specify the name of the project for this build. */ - void SetProjectName(const char*); + void SetProjectName(std::string const& name); /** * Get the name of the project for this build. */ - const char* GetProjectName() const; + std::string GetProjectName() const; /** Get the configurations to be generated. */ std::string GetConfigurations(std::vector& configs, diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 46d7e0113..71231259c 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -20,7 +20,7 @@ bool cmProjectCommand this->SetError("PROJECT called with incorrect number of arguments"); return false; } - this->Makefile->SetProjectName(args[0].c_str()); + this->Makefile->SetProjectName(args[0]); std::string bindir = args[0]; bindir += "_BINARY_DIR";