diff options
-rw-r--r-- | Source/cmake.cxx | 35 | ||||
-rw-r--r-- | Source/cmakemain.cxx | 11 |
2 files changed, 39 insertions, 7 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 84ecc0f..f037fc3 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -267,7 +267,16 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args) std::string entry = arg.substr(2); if(entry.size() == 0) { - entry = args[++i]; + ++i; + if(i < args.size()) + { + entry = args[i]; + } + else + { + cmSystemTools::Error("-D must be followed with VAR=VALUE."); + return false; + } } std::string var, value; cmCacheManager::CacheEntryType type = cmCacheManager::UNINITIALIZED; @@ -291,7 +300,16 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args) std::string path = arg.substr(2); if ( path.size() == 0 ) { - path = args[++i]; + ++i; + if(i < args.size()) + { + path = args[i]; + } + else + { + cmSystemTools::Error("-C must be followed by a file name."); + return false; + } } std::cerr << "loading initial cache file " << path.c_str() << "\n"; this->ReadListFile(path.c_str()); @@ -299,6 +317,11 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args) else if(arg.find("-P",0) == 0) { i++; + if(i >= args.size()) + { + cmSystemTools::Error("-P must be followed by a file name."); + return false; + } std::string path = args[i]; if ( path.size() == 0 ) { @@ -425,7 +448,13 @@ void cmake::SetArgs(const std::vector<std::string>& args) std::string value = arg.substr(2); if(value.size() == 0) { - value = args[++i]; + ++i; + if(i >= args.size()) + { + cmSystemTools::Error("No generator specified for -G"); + return; + } + value = args[i]; } cmGlobalGenerator* gen = this->CreateGlobalGenerator(value.c_str()); diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index bb01116..3da5a06 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -236,10 +236,13 @@ int do_cmake(int ac, char** av) { cmSystemTools::Error("No script specified for argument -P"); } - script_mode = true; - args.push_back(av[i]); - i++; - args.push_back(av[i]); + else + { + script_mode = true; + args.push_back(av[i]); + i++; + args.push_back(av[i]); + } } else { |