|  | @@ -14,15 +14,17 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class cmMessenger;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +using cmProp = const std::string*;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  class cmTargetPropertyComputer
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  public:
 | 
	
		
			
				|  |  |    template <typename Target>
 | 
	
		
			
				|  |  | -  static const char* GetProperty(Target const* tgt, const std::string& prop,
 | 
	
		
			
				|  |  | -                                 cmMessenger* messenger,
 | 
	
		
			
				|  |  | -                                 cmListFileBacktrace const& context)
 | 
	
		
			
				|  |  | +  static cmProp GetProperty(Target const* tgt, const std::string& prop,
 | 
	
		
			
				|  |  | +                            cmMessenger* messenger,
 | 
	
		
			
				|  |  | +                            cmListFileBacktrace const& context)
 | 
	
		
			
				|  |  |    {
 | 
	
		
			
				|  |  | -    if (const char* loc = GetLocation(tgt, prop, messenger, context)) {
 | 
	
		
			
				|  |  | +    if (cmProp loc = GetLocation(tgt, prop, messenger, context)) {
 | 
	
		
			
				|  |  |        return loc;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if (cmSystemTools::GetFatalErrorOccured()) {
 | 
	
	
		
			
				|  | @@ -52,9 +54,9 @@ private:
 | 
	
		
			
				|  |  |                                              std::string const& config);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename Target>
 | 
	
		
			
				|  |  | -  static const char* GetLocation(Target const* tgt, std::string const& prop,
 | 
	
		
			
				|  |  | -                                 cmMessenger* messenger,
 | 
	
		
			
				|  |  | -                                 cmListFileBacktrace const& context)
 | 
	
		
			
				|  |  | +  static cmProp GetLocation(Target const* tgt, std::string const& prop,
 | 
	
		
			
				|  |  | +                            cmMessenger* messenger,
 | 
	
		
			
				|  |  | +                            cmListFileBacktrace const& context)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    {
 | 
	
		
			
				|  |  |      // Watch for special "computed" properties that are dependent on
 | 
	
	
		
			
				|  | @@ -71,7 +73,7 @@ private:
 | 
	
		
			
				|  |  |                                            context)) {
 | 
	
		
			
				|  |  |            return nullptr;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return ComputeLocationForBuild(tgt).c_str();
 | 
	
		
			
				|  |  | +        return &ComputeLocationForBuild(tgt);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // Support "LOCATION_<CONFIG>".
 | 
	
	
		
			
				|  | @@ -82,7 +84,7 @@ private:
 | 
	
		
			
				|  |  |            return nullptr;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          std::string configName = prop.substr(9);
 | 
	
		
			
				|  |  | -        return ComputeLocation(tgt, configName).c_str();
 | 
	
		
			
				|  |  | +        return &ComputeLocation(tgt, configName);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // Support "<CONFIG>_LOCATION".
 | 
	
	
		
			
				|  | @@ -95,7 +97,7 @@ private:
 | 
	
		
			
				|  |  |                                              context)) {
 | 
	
		
			
				|  |  |              return nullptr;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -          return ComputeLocation(tgt, configName).c_str();
 | 
	
		
			
				|  |  | +          return &ComputeLocation(tgt, configName);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -103,8 +105,8 @@ private:
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename Target>
 | 
	
		
			
				|  |  | -  static const char* GetSources(Target const* tgt, cmMessenger* messenger,
 | 
	
		
			
				|  |  | -                                cmListFileBacktrace const& context);
 | 
	
		
			
				|  |  | +  static cmProp GetSources(Target const* tgt, cmMessenger* messenger,
 | 
	
		
			
				|  |  | +                           cmListFileBacktrace const& context);
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #endif
 |