浏览代码

Merge topic 'gicv-stdstring'

46855d000f cmCacheManager::GetInitializedCacheValue(): Return as const std::string*

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2357
Brad King 7 年之前
父节点
当前提交
0aab59809c
共有 3 个文件被更改,包括 15 次插入12 次删除
  1. 12 10
      Source/cmCacheManager.cxx
  2. 1 1
      Source/cmCacheManager.h
  3. 2 1
      Source/cmState.cxx

+ 12 - 10
Source/cmCacheManager.cxx

@@ -127,15 +127,15 @@ bool cmCacheManager::LoadCache(const std::string& path, bool internal,
   }
   this->CacheMajorVersion = 0;
   this->CacheMinorVersion = 0;
-  if (const char* cmajor =
+  if (const std::string* cmajor =
         this->GetInitializedCacheValue("CMAKE_CACHE_MAJOR_VERSION")) {
     unsigned int v = 0;
-    if (sscanf(cmajor, "%u", &v) == 1) {
+    if (sscanf(cmajor->c_str(), "%u", &v) == 1) {
       this->CacheMajorVersion = v;
     }
-    if (const char* cminor =
+    if (const std::string* cminor =
           this->GetInitializedCacheValue("CMAKE_CACHE_MINOR_VERSION")) {
-      if (sscanf(cminor, "%u", &v) == 1) {
+      if (sscanf(cminor->c_str(), "%u", &v) == 1) {
         this->CacheMinorVersion = v;
       }
     }
@@ -153,18 +153,20 @@ bool cmCacheManager::LoadCache(const std::string& path, bool internal,
   }
   // check to make sure the cache directory has not
   // been moved
-  const char* oldDir = this->GetInitializedCacheValue("CMAKE_CACHEFILE_DIR");
+  const std::string* oldDir =
+    this->GetInitializedCacheValue("CMAKE_CACHEFILE_DIR");
   if (internal && oldDir) {
     std::string currentcwd = path;
-    std::string oldcwd = oldDir;
+    std::string oldcwd = *oldDir;
     cmSystemTools::ConvertToUnixSlashes(currentcwd);
     currentcwd += "/CMakeCache.txt";
     oldcwd += "/CMakeCache.txt";
     if (!cmSystemTools::SameFile(oldcwd, currentcwd)) {
+      const std::string* dir =
+        this->GetInitializedCacheValue("CMAKE_CACHEFILE_DIR");
       std::ostringstream message;
       message << "The current CMakeCache.txt directory " << currentcwd
-              << " is different than the directory "
-              << this->GetInitializedCacheValue("CMAKE_CACHEFILE_DIR")
+              << " is different than the directory " << (dir ? *dir : "")
               << " where CMakeCache.txt was created. This may result "
                  "in binaries being created in the wrong place. If you "
                  "are not sure, reedit the CMakeCache.txt";
@@ -512,12 +514,12 @@ cmCacheManager::CacheIterator cmCacheManager::GetCacheIterator(const char* key)
   return CacheIterator(*this, key);
 }
 
-const char* cmCacheManager::GetInitializedCacheValue(
+const std::string* cmCacheManager::GetInitializedCacheValue(
   const std::string& key) const
 {
   CacheEntryMap::const_iterator i = this->Cache.find(key);
   if (i != this->Cache.end() && i->second.Initialized) {
-    return i->second.Value.c_str();
+    return &i->second.Value;
   }
   return nullptr;
 }

+ 1 - 1
Source/cmCacheManager.h

@@ -126,7 +126,7 @@ public:
   int GetSize() { return static_cast<int>(this->Cache.size()); }
 
   ///! Get a value from the cache given a key
-  const char* GetInitializedCacheValue(const std::string& key) const;
+  const std::string* GetInitializedCacheValue(const std::string& key) const;
 
   const char* GetCacheEntryValue(const std::string& key)
   {

+ 2 - 1
Source/cmState.cxx

@@ -142,7 +142,8 @@ const char* cmState::GetCacheEntryValue(std::string const& key) const
 
 const char* cmState::GetInitializedCacheValue(std::string const& key) const
 {
-  return this->CacheManager->GetInitializedCacheValue(key);
+  const std::string* p = this->CacheManager->GetInitializedCacheValue(key);
+  return p ? p->c_str() : nullptr;
 }
 
 cmStateEnums::CacheEntryType cmState::GetCacheEntryType(