summaryrefslogtreecommitdiff
path: root/Source/cmSetCommand.cxx
diff options
context:
space:
mode:
authorMatthias Maennich <matthias@maennich.net>2017-10-05 13:12:00 +0200
committerBrad King <brad.king@kitware.com>2017-10-10 13:28:39 -0400
commit5731f6d5b1986a7ee13e83ff73971a9f44e0229a (patch)
tree0049b2dbabb259bd4c6be5f697ac7760806b7a00 /Source/cmSetCommand.cxx
parentcb8f26f199e18be231f40f523bfe64375e749e35 (diff)
downloadcmake-5731f6d5b1986a7ee13e83ff73971a9f44e0229a.tar.gz
cm{Unset,Set}Command: use std::string to determine the env variable name
Diffstat (limited to 'Source/cmSetCommand.cxx')
-rw-r--r--Source/cmSetCommand.cxx14
1 files changed, 4 insertions, 10 deletions
diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx
index b32cda3cd2..985aac80f0 100644
--- a/Source/cmSetCommand.cxx
+++ b/Source/cmSetCommand.cxx
@@ -2,8 +2,6 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmSetCommand.h"
-#include <string.h>
-
#include "cmAlgorithms.h"
#include "cmMakefile.h"
#include "cmState.h"
@@ -22,19 +20,15 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args,
}
// watch for ENV signatures
- const char* variable = args[0].c_str(); // VAR is always first
- if (cmHasLiteralPrefix(variable, "ENV{") && strlen(variable) > 5) {
+ auto const& variable = args[0]; // VAR is always first
+ if (cmHasLiteralPrefix(variable, "ENV{") && variable.size() > 5) {
// what is the variable name
- char* varName = new char[strlen(variable)];
- strncpy(varName, variable + 4, strlen(variable) - 5);
- varName[strlen(variable) - 5] = '\0';
- std::string putEnvArg = varName;
- putEnvArg += "=";
+ auto const& varName = variable.substr(4, variable.size() - 5);
+ std::string putEnvArg = varName + "=";
// what is the current value if any
std::string currValue;
const bool currValueSet = cmSystemTools::GetEnv(varName, currValue);
- delete[] varName;
// will it be set to something, then set it
if (args.size() > 1 && !args[1].empty()) {