[Cmake-commits] [cmake-commits] king committed cmLocalUnixMakefileGenerator3.cxx 1.249 1.250

cmake-commits at cmake.org cmake-commits at cmake.org
Sat May 10 18:39:02 EDT 2008


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv21727/Source

Modified Files:
	cmLocalUnixMakefileGenerator3.cxx 
Log Message:
BUG: Fix logic that loops over multiple output pairs to not loop beyond the vector when there are an odd number of entries.


Index: cmLocalUnixMakefileGenerator3.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalUnixMakefileGenerator3.cxx,v
retrieving revision 1.249
retrieving revision 1.250
diff -C 2 -d -r1.249 -r1.250
*** cmLocalUnixMakefileGenerator3.cxx	8 May 2008 14:09:14 -0000	1.249
--- cmLocalUnixMakefileGenerator3.cxx	10 May 2008 22:39:00 -0000	1.250
***************
*** 1526,1551 ****
    cmSystemTools::ExpandListArgument(pairs_string, pairs, true);
    for(std::vector<std::string>::const_iterator i = pairs.begin();
!       i != pairs.end(); ++i)
      {
!     const std::string& depender = *i;
!     if(++i != pairs.end())
!       {
!       const std::string& dependee = *i;
  
!       // If the depender is missing then delete the dependee to make
!       // sure both will be regenerated.
!       if(cmSystemTools::FileExists(dependee.c_str()) &&
!          !cmSystemTools::FileExists(depender.c_str()))
          {
!         if(verbose)
!           {
!           cmOStringStream msg;
!           msg << "Deleting primary custom command output \"" << dependee
!               << "\" because another output \""
!               << depender << "\" does not exist." << std::endl;
!           cmSystemTools::Stdout(msg.str().c_str());
!           }
!         cmSystemTools::RemoveFile(dependee.c_str());
          }
        }
      }
--- 1526,1548 ----
    cmSystemTools::ExpandListArgument(pairs_string, pairs, true);
    for(std::vector<std::string>::const_iterator i = pairs.begin();
!       i != pairs.end() && (i+1) != pairs.end();)
      {
!     const std::string& depender = *i++;
!     const std::string& dependee = *i++;
  
!     // If the depender is missing then delete the dependee to make
!     // sure both will be regenerated.
!     if(cmSystemTools::FileExists(dependee.c_str()) &&
!        !cmSystemTools::FileExists(depender.c_str()))
!       {
!       if(verbose)
          {
!         cmOStringStream msg;
!         msg << "Deleting primary custom command output \"" << dependee
!             << "\" because another output \""
!             << depender << "\" does not exist." << std::endl;
!         cmSystemTools::Stdout(msg.str().c_str());
          }
+       cmSystemTools::RemoveFile(dependee.c_str());
        }
      }



More information about the Cmake-commits mailing list