| 
					
				 | 
			
			
				@@ -586,7 +586,7 @@ void cmState::AppendGlobalProperty(const std::string& prop, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   this->GlobalProperties.AppendProperty(prop, value, asString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const char* cmState::GetGlobalProperty(const std::string& prop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cmProp cmState::GetGlobalProperty(const std::string& prop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CACHE_VARIABLES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<std::string> cacheKeys = this->GetCacheEntryKeys(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -610,41 +610,59 @@ const char* cmState::GetGlobalProperty(const std::string& prop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define STRING_LIST_ELEMENT(F) ";" #F 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_C_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_C_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_C_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_C90_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_C90_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_C90_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_C99_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_C99_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_C99_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_C11_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_C11_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_C11_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_CXX_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_CXX98_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_CXX98_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_CXX98_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_CXX11_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_CXX11_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_CXX11_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_CXX14_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_CXX14_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_CXX14_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (prop == "CMAKE_CUDA_KNOWN_FEATURES") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return &FOR_EACH_CUDA_FEATURE(STRING_LIST_ELEMENT)[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static const std::string s_out( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      &FOR_EACH_CUDA_FEATURE(STRING_LIST_ELEMENT)[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return &s_out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #undef STRING_LIST_ELEMENT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmProp retVal = this->GlobalProperties.GetPropertyValue(prop); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return retVal ? retVal->c_str() : nullptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return this->GlobalProperties.GetPropertyValue(prop); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 bool cmState::GetGlobalPropertyAsBool(const std::string& prop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return cmIsOn(this->GetGlobalProperty(prop)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmProp p = this->GetGlobalProperty(prop); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return p && cmIsOn(*p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void cmState::SetSourceDirectory(std::string const& sourceDirectory) 
			 |