aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-09-07 14:52:19 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-09-08 15:38:22 +0000
commitfc98027c20cdf65121bc1bf572f7e76a7e449142 (patch)
treec386526bbffcfebc3d6d2e7ed4a3dc263633db98 /src
parentb8f1b85ade3fcdcd356d220309588e377c59ef95 (diff)
Fix undefined behavior in command line parser
Change-Id: Ifa6b8b67f897d5405f7ec118ddf76831077ccfed Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/app/qbs/parser/commandlineoption.cpp1
-rw-r--r--src/app/qbs/parser/commandlineoption.h2
-rw-r--r--src/app/qbs/parser/commandlineparser.cpp2
-rw-r--r--src/lib/corelib/tools/commandechomode.cpp4
-rw-r--r--src/lib/corelib/tools/commandechomode.h2
5 files changed, 5 insertions, 6 deletions
diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp
index 3ad60e292..19c7916c7 100644
--- a/src/app/qbs/parser/commandlineoption.cpp
+++ b/src/app/qbs/parser/commandlineoption.cpp
@@ -596,7 +596,6 @@ void SettingsDirOption::doParse(const QString &representation, QStringList &inpu
}
CommandEchoModeOption::CommandEchoModeOption()
- : m_echoMode(static_cast<CommandEchoMode>(-1))
{
}
diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h
index e27ef9518..e660860ef 100644
--- a/src/app/qbs/parser/commandlineoption.h
+++ b/src/app/qbs/parser/commandlineoption.h
@@ -363,7 +363,7 @@ public:
private:
void doParse(const QString &representation, QStringList &input);
- CommandEchoMode m_echoMode;
+ CommandEchoMode m_echoMode = CommandEchoModeInvalid;
};
class SettingsDirOption : public CommandLineOption
diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp
index d1ab5d176..b41f7d749 100644
--- a/src/app/qbs/parser/commandlineparser.cpp
+++ b/src/app/qbs/parser/commandlineparser.cpp
@@ -628,7 +628,7 @@ CommandEchoMode CommandLineParser::CommandLineParserPrivate::echoMode() const
if (command->type() == GenerateCommandType)
return CommandEchoModeSilent;
- if (optionPool.commandEchoModeOption()->commandEchoMode() >= 0)
+ if (optionPool.commandEchoModeOption()->commandEchoMode() < CommandEchoModeInvalid)
return optionPool.commandEchoModeOption()->commandEchoMode();
return defaultCommandEchoMode();
diff --git a/src/lib/corelib/tools/commandechomode.cpp b/src/lib/corelib/tools/commandechomode.cpp
index 268243af5..f68b334bd 100644
--- a/src/lib/corelib/tools/commandechomode.cpp
+++ b/src/lib/corelib/tools/commandechomode.cpp
@@ -67,7 +67,7 @@ QString commandEchoModeName(CommandEchoMode mode)
CommandEchoMode commandEchoModeFromName(const QString &name)
{
CommandEchoMode mode = defaultCommandEchoMode();
- for (int i = 0; i <= static_cast<int>(CommandEchoModeLast); ++i) {
+ for (int i = 0; i < CommandEchoModeInvalid; ++i) {
if (commandEchoModeName(static_cast<CommandEchoMode>(i)) == name) {
mode = static_cast<CommandEchoMode>(i);
break;
@@ -80,7 +80,7 @@ CommandEchoMode commandEchoModeFromName(const QString &name)
QStringList allCommandEchoModeStrings()
{
QStringList result;
- for (int i = 0; i <= static_cast<int>(CommandEchoModeLast); ++i)
+ for (int i = 0; i < CommandEchoModeInvalid; ++i)
result << commandEchoModeName(static_cast<CommandEchoMode>(i));
return result;
}
diff --git a/src/lib/corelib/tools/commandechomode.h b/src/lib/corelib/tools/commandechomode.h
index e820b15a8..86975e2f3 100644
--- a/src/lib/corelib/tools/commandechomode.h
+++ b/src/lib/corelib/tools/commandechomode.h
@@ -42,7 +42,7 @@ enum CommandEchoMode {
CommandEchoModeSummary,
CommandEchoModeCommandLine,
CommandEchoModeCommandLineWithEnvironment,
- CommandEchoModeLast = CommandEchoModeCommandLineWithEnvironment
+ CommandEchoModeInvalid,
};
QBS_EXPORT CommandEchoMode defaultCommandEchoMode();